0x001 漏洞简介
北京时间 3 月 12 日晚,微软发布安全公告披露了一个最新的SMB远程代码执行漏洞(CVE-2020-0796),该漏洞是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的,它可让远程且未经身份验证的攻击者在目标系统上执行任意代码。
- 漏洞编号:CVE-2020–0796
- POC工具(C++版):https://github.com/danigargu/CVE-2020-0796
- POC工具(Python版):https://github.com/ZecOps/CVE-2020-0796-LPE-POC
- POC工具(EXE版):https://pan.baidu.com/s/13FH3VIgBYufhCV5dqnNr4w 提取码为
bh7c
0x002 影响版本
- Windows 10版本1903(用于32位系统)
- Windows 10版本1903(用于基于ARM64的系统)
- Windows 10版本1903(用于基于x64的系统)
- Windows 10版本1909(用于32位系统)
- Windows 10版本1909(用于基于ARM64的系统)
- Windows 10版本1909(用于基于x64的系统)
- Windows Server 1903版(服务器核心安装)
- Windows Server 1909版(服务器核心安装)
0x003 漏洞检测
检测工具使用命令
python scanner.py IP
此漏洞检测工具为python2
脚本。
import socket
import struct
import sys
pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
sock = socket.socket(socket.AF_INET)
sock.settimeout(3)
sock.connect(( sys.argv[1], 445 ))
sock.send(pkt)
nb, = struct.unpack(">I", sock.recv(4))
res = sock.recv(nb)
if not res[68:70] == b"\x11\x03":
exit("Not vulnerable.")
if not res[70:72] == b"\x02\x00":
exit("Not vulnerable.")
exit("Vulnerable.")
代码来源:https://github.com/ollypwn/SMBGhost/blob/master/scanner.py
0x004 漏洞演示
1. 环境准备
为了便于操作演示,本次采用VMare
虚拟机软件,搭建一个存在该漏洞的Win10 x64 1909
的靶机,然后在该靶机上新建了一个普通权限用户lucky
,并且开启SMB
服务。
2. 检测漏洞
检测工具使用命令
python scanner.py 192.168.1.6
3. 蓝屏攻击
命令行运行EXP
工具后,输入目标IP
进行蓝屏攻击,成功后目标主机会蓝屏报错。
4. 本地提权
命令行运行EXP
工具后,输入IP:127.0.0.1
进行本地提权,成功后会弹出system
终端。
0x005 漏洞修复
(1) 关闭445端口,防御利用该漏洞的攻击。
(2) 禁用SMBv3压缩,使用以下PowerShell命令可禁用SMBv3服务的压缩(无需重新启动):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
(3)打补丁:https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762
(4)更新系统版本至2004