CVE-2020-0796漏洞复现

CVE-2020-0796

简介

微软3月11日发布3月例行更新,其中并未公布编号为CVE-2020-0796的高危漏洞资料,但该漏洞却最为引人注目。次日晚(2020年3月12日)微软正式发布CVE-2020-0796高危漏洞补丁。
该漏洞的后果十分接近永恒之蓝系列,都利用Windows SMB漏洞远程攻击获取系统最高权限,WannaCry勒索蠕虫就是利用永恒之蓝系列漏洞攻击工具制造的大灾难。除了直接攻击SMB服务端造成RCE外,该漏洞得亮点在于对SMB客户端的攻击,攻击者可以构造特定的网页,压缩包,共享目录,OFFICE文档等多种方式触发漏洞进行攻击。

漏洞影响

漏洞不影响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)

前期准备

win10一台(win10 1903或者win10 1909系列)
IP:192.168.91.141
CVE-2020-0796漏洞复现_第1张图片
关闭防火墙CVE-2020-0796漏洞复现_第2张图片
Kali Linux一台(IP:192.168.91.142)

确保与win10可以ping通
CVE-2020-0796漏洞复现_第3张图片

开始实验

gohb@gohb:~/桌面$ mkdir cve-2020-0796
gohb@gohb:~/桌面$ cd cve-2020-0796/
gohb@gohb:~/桌面/cve-2020-0796$ git clone https://github.com/ollypwn/SMBGhost.git
gohb@gohb:~/桌面/cve-2020-0796$ ls
gohb@gohb:~/桌面/cve-2020-0796$ cd SMBGhost/
gohb@gohb:~/桌面/cve-2020-0796/SMBGhost$ python3 scanner.py 192.168.91.141

检测出服务器易受攻击,它通过协商请求检查SMB方言3.1.1和压缩功能,对CVE-2020-0796-SMBv3 RCE的进行简单扫描
CVE-2020-0796漏洞复现_第4张图片

安装impacket库

gohb@gohb:~/桌面/cve-2020-0796$ git clone https://github.com/SecureAuthCorp/impacket.git
gohb@gohb:~/桌面/cve-2020-0796$ ls
gohb@gohb:~/桌面/cve-2020-0796$ cd impacket/
gohb@gohb:~/桌面/cve-2020-0796/impacket$ sudo python3 setup.py install
gohb@gohb:~/桌面/cve-2020-0796/impacket$ cd ..
gohb@gohb:~/桌面/cve-2020-0796$ git clone https://github.com/insightglacier/SMBGhost_Crash_Poc.git
gohb@gohb:~/桌面/cve-2020-0796$ ls
gohb@gohb:~/桌面/cve-2020-0796$ cd SMBGhost_Crash_Poc/

测试结果

CVE-2020-0796漏洞复现_第5张图片

漏洞原理

CVE-2020-0796是Windows 10 1903/1909的新SMB3压缩功能中的错误。SMB协议版本3.1.1引入了一种功能,即客户端或服务器可以发布压缩功能,并有选择地压缩SMB3消息。要做到这一点,协商SMB会话,客户端和服务器都必须当包括SMB2_COMPRESSION_CAPABILITIES在记录MS-SMB2 2.2.3.1.3。
使用此功能协商会话后,客户端或服务器可以选择压缩某些SMB消息。为此,如MS-SMB2 2.2.42中所述,压缩整个SMB数据包,并添加转换后的标头。此标头是一个小的(16字节)结构,具有魔术值,未压缩的数据大小,使用的压缩算法和偏移值。
CVE-2020-0796是由该偏移量大小中缺少边界检查导致的,该偏移量大小直接传递给多个子例程。传入较大的值将导致缓冲区溢出,并使内核崩溃。通过进一步的工作,可以将其开发为RCE漏洞利用程序。

POC解读

使用转换头中设置的错误偏移量字段压缩身份验证请求,从而使解压缩器缓冲溢出并崩溃目标。它包含对smbprotocol的修改,增加了对SMB 3.1.1压缩/解压缩的支持(仅LZNT1)。大多数添加项位于中smbprotocol/connection.py。python3通过修改,将压缩转换头位于SMB2CompressionTransformHeader该类中。_compress调用该函数以压缩树请求。这是将offset字段设置为高电平以触发崩溃的地方。

修复方案

1.个人用户也可直接运行Windows 更新,完成补丁的安装。
2.个人用户也可通过手动修改注册表,防止被黑客远程攻击。如下操作:
运行regedit.exe,打开注册表编辑器,在HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能。

你可能感兴趣的:(漏洞复现)