渗透测试思路总结
一、说明
本文旨在肯定和总结当前主流的渗透测试步骤,拓展操作系统从漏洞分析到渗透攻击的途径,并指出渗透 Web 系统可采用'功能–功能对应检测点'这种触发式渗透方式。
二、渗透操作系统(服务版本号漏洞检索法)
操作系统类漏洞通常由代码审计或逆向分析挖掘,需要深厚的知识储备。对于一般渗透而言,利用已知漏洞即可,无需自行挖掘。查找操作系统类漏洞的关键操作是确定端口背后的软件及版本,然后使用'软件名 + 软件版本'在漏洞库中查找存在的漏洞乃至 Exploit。
2.1 获取正在监听端口的软件及版本号
通过端口扫描工具探测开放端口,识别服务类型及版本信息。例如,探测到 8080 端口为 Tomcat 监听,版本号为 8.5.14。
# 使用 Nmap 进行服务版本探测
nmap -sV -p 8080 <target_ip>
2.2 搜索已有漏洞库,获取该软件及相应版本存在的漏洞列表
2.2.1 搜索 CVE 漏洞库
访问 CVE 官方数据库或第三方聚合站点,输入软件名称和版本号查询关联的 CVE ID。
2.2.2 查看 CVE 具体信息
在 cvedetails 或 MITRE 等网站查看 CVE 详情,包括描述、CVSS 评分、受影响版本范围及修复建议。
2.3 通过 CVE 查找 Exploit
2.3.1 参考链接查找
在 CVE 详情页的 References 区域,可能包含 Exploit-DB 或 Metasploit 的链接。
2.3.2 搜索引擎查找
利用 Google、Twitter 等搜索引擎组合关键词(如 CVE-2017-12617 exploit)寻找公开利用代码。
2.3.3 专业数据库查找
- Metasploit: 在 msfconsole 中使用
search命令更新数据库后查找模块。 - Exploit-DB: 使用
searchsploit本地数据库查询。 - GitHub: 搜索相关漏洞的 PoC 代码。
- 漏洞扫描器: 使用 OpenVAS 等系统进行自动化扫描。
三、渗透 Web 系统(功能触发式检测法)
Web 系统可利用现成漏洞(如 CMS、插件、框架、中间件),确认组件后同样去漏洞库查找利用方式。但更多时候需要自主挖掘业务逻辑漏洞和技术型漏洞。
- 业务逻辑漏洞: 每套系统实现不同,无统一签名,通用扫描器难以发现。如支付绕过、权限越权、流程篡改。
- 技术型漏洞: 因一致的实现或使用一致的第三方组件导致,有相对统一的漏洞签名,可使用通用扫描器发现。如 SQL 注入、XSS、RCE。
结合经验,构建'功能----功能对应检测点'表,看到某功能即检测对应检测点。
3.1 信息收集
信息收集的目的是锁定可用手段的范围。
- 网站真实 IP: 站长、nslookup、dig、whois 查询。
- 操作系统: TTL 值判断、index.php 特征、访问不存在页面返回错误。
- 网站语言: 页面后缀(.php, .jsp)、Response 包头。
- 服务器环境: 访问不存在页面、Response 包头、Whatweb 工具。
- 数据库: 注入报错回显、Telnet 端口探测。
- : Nmap、arp_sweep、portscan。


