渗透测试核心思路与实战方法论总结
一、说明
现有的《Metasploit 渗透测试魔鬼训练营》等书籍对渗透测试的步骤流程划分得比较合理透彻,但在多次通读后仍感觉不得要领——面对一台给定的主机进行渗透时,不知道到底该如何着手。主要原因通常存在以下两点:
- 操作系统渗透:从漏洞分析到渗透攻击这一步很难跨越。按书中漏洞分析基本只有 OpenVAS 等漏洞扫描器一条途径,漏洞利用只有 Metasploit 搜索一条途径;而漏洞扫描器扫出漏洞,Metasploit 中又正好有利用模块的情况少之又少。
- Web 系统渗透:很多书籍只讲漏洞类型,并不能明确指出面对一个 Web 系统,应该在哪里检测哪些漏洞。
本文旨在肯定和总结现在主流的渗透测试步骤,拓展操作系统渗透时从漏洞分析到渗透攻击的途径,并指出渗透 Web 系统可采用'功能–功能对应检测点'这种触发式渗透方式。
二、渗透操作系统(服务版本号漏洞检索法)
操作系统类漏洞一般都是通过代码审计或逆向分析挖掘的,这需要高深的知识储备。对于一般的渗透而言,利用已知漏洞即可,无需自己去挖掘这类漏洞。查找操作系统类漏洞关键的操作是确定端口背后的软件及软件版本,然后用得到的软件名 + 软件版本去各漏洞库查找其存在的漏洞乃至 Exploit。
2.1 获取正在监听端口的软件及该软件的版本号
假设我们探测到 8080 端口为 Tomcat 监听,版本号为 8.5.14。可以通过 Banner Grabbing 技术获取服务信息。
2.2 搜索已有漏洞库,获取该软件及相应版本存在的漏洞列表
2.2.1 搜索 CVE 漏洞库
访问 CVE 官方数据库或第三方聚合站点,输入软件名称和版本号,获取相关的 CVE ID 列表。
2.3 查看 CVE 具体信息
2.3.1 在 cvedetails 查看 CVE 具体信息
通过 CVE 编号查询详细信息,包括描述、CVSS 评分、受影响版本等。
2.3.2 在 MITRE 查看 CVE 具体信息
访问 MITRE 官网获取最权威的 CVE 定义和参考链接。
2.4 通过 CVE 查找 Exploit
2.4.1 在 References 区域查找
在 CVE 详情页的 References For CVE-xxx 参考区里,可能包含 Exploit 链接。
2.4.2 搜索引擎查找
在 CVE 详情页面直接点击搜索 Twitter/YouTube/Google,寻找相关 PoC 或 Exploit 分享。
2.4.3 在 Metasploit 数据库查找
使用 msfconsole 中的 search 命令查找对应模块(注意可能需要更新数据库)。
2.4.4 在 Exploit Database 查找
使用 searchsploit 工具在本地或在线数据库中查找对应的 Exploit。
2.4.5 在 GitHub 查找
在 GitHub 上搜索 CVE 编号或软件名称 + exploit,往往能找到社区编写的脚本。
2.4.6 使用系统漏洞扫描器
如 OpenVAS 等系统漏洞扫描器,可辅助发现已知漏洞。
三、渗透 Web 系统(功能触发式检测法)
Web 系统可以利用现成的漏洞,如各类 CMS 的漏洞(例如 ECShop)、各类插件的漏洞(例如 WordPress 的各类插件漏洞)、各类框架的漏洞(例如 Struts 反序列化)、各类中间件漏洞(例如 WebLogic 反序列化)。确认 Web 系统使用了该 CMS、插件、框架、中间件之后,和操作系统类漏洞一样到各漏洞库去找利用方式即可。
Web 漏洞可分为业务逻辑漏洞和技术型漏洞两类:
- :每套系统都有自己实现,无统一的漏洞签名,无法使用通用扫描器发现的漏洞。


