已完成目标侦察扫描,如何选择无需交互的Exploit与Payload
如何系统性地在Metasploit中选择Exploit和Payload(告别盲目测试)
完全不用抱歉英语的问题——学习新领域的时候,语言从来不是障碍!你已经完成了侦察和扫描的关键步骤,这已经比很多新手稳多了,接下来我们用结构化的方法缩小范围,每一步都清楚自己在做什么:
第一步:先把扫描结果做分层梳理
你手里已经有了开放端口、服务名/版本、OS、防火墙信息,先把这些整理成绑定关系的列表,比如:
- 端口80:Apache httpd 2.4.29(Ubuntu 18.04)
- 端口445:Samba 4.7.6(Windows Server 2016)
- ...
把「端口→服务+版本→操作系统」绑定起来,这是后续筛选exploit的核心依据,千万别零散着看。
第二步:用Metasploit内置筛选精准定位候选模块
别直接去翻所有exploit,Metasploit自带的搜索工具能帮你快速缩小范围:
- 按服务+版本筛选:比如针对Apache 2.4.29,直接跑:
search exploit:apache version:2.4.29 - 叠加稳定性+自动检测筛选:加上
rank:excellent/good(评级越高的模块越稳定,大多无需额外交互)和check:yes(带check功能的模块能先验证漏洞是否存在,不用直接攻击),命令变成:search exploit:apache version:2.4.29 rank:excellent check:yes - 确认是否需要交互:找到候选模块后,用
info [模块名]查看详情,比如:
在输出里找info exploit/linux/http/apache_mod_cgi_bash_env_execAutomatic字段,如果是Yes,说明这个模块不需要手动输入太多参数,能自动完成攻击流程。
第三步:匹配无需交互的Payload
选好exploit后,Payload的选择也要对应目标和需求:
- 优先选反向连接Payload:比如
linux/x64/meterpreter/reverse_tcp,这类Payload是主动连接你的攻击机,更容易绕过目标防火墙的入站限制 - 避开需要手动交互的Payload:别选需要终端确认的bind shell,优先选meterpreter、shell_reverse_tcp这类能自动建立会话的模块
- 匹配目标架构:比如目标是64位Linux,就别选32位的Payload,否则会直接失败
第四步:先验证再攻击,避免无效尝试
如果还有几个候选模块,别直接挨个攻击,先用check命令验证漏洞是否真实存在:
use exploit/linux/http/apache_mod_cgi_bash_env_exec set RHOSTS [目标IP] check
如果返回The target is vulnerable.,再执行run发起攻击,这样能减少无效操作,也降低被目标检测到的概率。
额外小技巧:用CVE精准定位
你可以把服务版本对应到已知CVE(比如Apache 2.4.29对应CVE-2019-0211),直接搜索该CVE对应的Metasploit模块:
search cve:CVE-2019-0211
这样能直接定位到针对性的exploit,完全不用瞎试。
记住,渗透测试的核心是信息驱动——你已经收集了最关键的信息,只要把这些信息和Metasploit的工具结合起来,就能每一步都有依据,而不是盲目碰运气。
内容的提问来源于stack exchange,提问作者user7657641
相关产品推荐
相关产品推荐

