1. Web渗透测试信息收集CheckList详解
从事Web安全测试多年,我深刻体会到信息收集在整个渗透测试过程中的重要性。正如安全圈常说的"渗透测试70%的时间都在信息收集",全面细致的信息收集往往能发现意想不到的突破口。本文将系统梳理Web渗透测试中的信息收集CheckList,帮助安全从业者建立完整的信息收集方法论。
2. 目标识别与定位
2.1 CDN检测与真实IP获取
CDN技术在现代Web应用中广泛使用,它通过分布式节点缓存内容,提升访问速度的同时也隐藏了服务器的真实IP。识别目标是否使用CDN是信息收集的第一步。
2.1.1 CDN检测方法
多地Ping检测法:
bash复制# 使用不同地区的主机ping目标域名
ping example.com
# 使用在线多地ping服务
curl https://www.wepcc.com/check-ping.html?host=example.com
DNS解析检测法:
bash复制nslookup example.com
# 观察返回的IP是否一致
dig example.com ANY
特征判断依据:
- 返回多个不同IP地址
- 解析结果包含CDN服务商特征(如*.cdn.com)
- TTL值异常低(通常CDN的TTL在300秒以下)
2.1.2 绕过CDN获取真实IP
历史DNS记录查询:
bash复制# 使用在线服务查询历史解析记录
curl https://viewdns.info/iphistory/?domain=example.com
子域名探测法:
bash复制# 常用子域名爆破工具
python3 subfinder.py -d example.com
国外节点请求法:
bash复制# 通过国外代理服务器访问
curl --proxy http://proxy-server:port http://example.com
邮件服务器追踪:
- 注册目标网站账号触发验证邮件
- 分析邮件头中的Received字段
- 追踪邮件服务器的IP地址
3. 资产发现与测绘
3.1 子域名挖掘
子域名是主站的延伸,往往安全防护较弱。全面的子域名收集能显著扩大攻击面。
常用工具对比:
| 工具名称 | 特点 | 适用场景 |
|---|---|---|
| OneForAll | 多引擎聚合查询 | 全面扫描 |
| Sublist3r | 快速轻量 | 初步探测 |
| subDomainsBrute | 字典爆破 | 深度扫描 |
证书透明度查询:
bash复制# 使用crtsh查询证书关联域名
curl "https://crt.sh/?q=%.example.com&output=json"
3.2 旁站与C段扫描
旁站识别方法:
bash复制nmap -sS -p 80,443 --open x.x.x.x/24
C段存活主机探测:
bash复制masscan -p80,443 x.x.x.0/24 --rate=1000
注意事项:
- 控制扫描频率避免触发防护
- 优先扫描常见Web端口(80,443,8080等)
- 记录开放特殊服务的主机(如数据库端口)
4. 服务指纹识别
准确的指纹识别能大幅提高漏洞利用成功率。
4.1 Web组件识别
常用识别工具:
bash复制whatweb -v http://example.com
wappalyzer http://example.com
识别维度:
- HTTP头信息(Server,X-Powered-By)
- Cookie特征(如PHPSSID)
- 特定文件路径(/wp-admin/)
- 页面关键字(Powered by WordPress)
4.2 端口服务识别
Nmap高级扫描:
bash复制nmap -sV -sC -O -T4 -p- x.x.x.x
重点服务端口:
| 端口 | 常见服务 | 潜在风险 |
|---|---|---|
| 22 | SSH | 弱口令爆破 |
| 3306 | MySQL | 未授权访问 |
| 6379 | Redis | 未授权访问 |
| 8080 | Web服务 | 管理后台 |
5. 目录与敏感文件探测
5.1 目录爆破技巧
工具选择建议:
- Dirsearch:多线程速度快
- DirBuster:图形界面易用
- Gobuster:支持多种模式
优化策略:
bash复制# 使用扩展字典
dirsearch -u http://example.com -w /path/to/dictionary.txt
# 设置延迟避免封禁
dirsearch -u http://example.com --delay=1
5.2 敏感文件发现
常见敏感文件:
- 配置文件(.env, config.php)
- 备份文件(.bak, .old)
- 版本控制文件(.git/, .svn/)
- 测试页面(test.php, info.php)
自动化检测脚本:
python复制import requests
files = ['.env','config.php.bak','.git/HEAD']
for file in files:
resp = requests.get(f'http://example.com/{file}')
if resp.status_code == 200:
print(f'Found: {file}')
6. 社会工程学信息收集
6.1 WHOIS信息查询
bash复制whois example.com
关键信息提取:
- 注册人姓名/邮箱
- 注册商信息
- 域名到期时间
6.2 员工信息搜集
方法:
- LinkedIn公司页面分析
- GitHub关联账号发现
- 公司新闻稿中的联系人
注意事项:
- 遵守当地法律法规
- 仅用于授权测试目的
- 不进行恶意社工行为
7. 自动化信息收集实践
7.1 脚本化信息收集
python复制import os
def info_gathering(domain):
# 子域名扫描
os.system(f'subfinder -d {domain} -o subdomains.txt')
# 端口扫描
os.system(f'nmap -sS -p- -T4 {domain} -oA nmap_scan')
# 目录爆破
os.system(f'dirsearch -u https://{domain} -e php,asp,aspx,jsp')
7.2 信息收集工具链
推荐工具组合:
- Amass:综合资产发现
- Naabu:快速端口扫描
- Hakrawler:页面链接抓取
- Nuclei:自动化漏洞检测
8. 防御对抗策略
作为防御方,建议采取以下措施:
- CDN配置:严格限制源站IP暴露
- 日志监控:实时分析扫描行为
- 错误配置:关闭不必要的服务与端口
- 敏感信息:定期检查并移除
信息收集是渗透测试的基础环节,需要持续积累经验和更新知识库。建议安全从业者建立自己的检查清单,并根据实际测试情况不断优化完善。