渗透测试之信息收集:这些技巧决定了渗透成败
渗透测试之信息收集:这些技巧决定了渗透成败
作者:浅木·先生
前言
做渗透测试久了,你会越来越认同一个观点:信息收集的质量直接决定渗透测试的成败。
同样的目标URL,不同人扫出来的结果完全不同——有人只能扫出后台登录页,有人却能通过旁站拿下同服务器的其他项目。有人对着主站无可奈何,有人通过子域名发现了测试环境直接弱口令进后台。
这不是工具的差距,而是信息收集思路和深度的差距。
本文系统性地梳理渗透测试信息收集的全部技巧,涵盖域名、端口、目录、指纹、社工等多个维度,帮你做到"打谁都有东西打"。
一、资产发现:从目标域名开始
1.1 域名基础信息收集
拿到目标URL后,第一步是查清楚这个域名的"底细":
# whois查询:注册人、注册邮箱、NS服务器、到期时间
whois target.com
# whois反查:同一个注册人还注册了哪些域名(扩大攻击面)
whois -h whois.verisign.com "=$ domain target.com"
# 真实IP判断:是否使用CDN/WAF
nslookup target.com
dig target.com
在线检测:https://www.ipaddresscenter.com/
# CDN检测:
# 如果多个地点ping出来的IP不同,说明有CDN,直接打CDN IP通常没意义
实战技巧: 如果目标用了CDN,可以尝试:
- 通过子域名查真实IP(CDN一般只给主站配)
- 通过邮件Spoofing查真实IP
- 通过国外DNS服务器查询:
dig @8.8.8.8 target.com
1.2 子域名探测
子域名是扩大攻击面的利器。主站防护再好,测试站往往漏洞一堆。
# 被动收集(快,不发请求到目标)
amass enum -passive -d target.com -o subdomains.txt
subfinder -d target.com -o subdomains.txt
# 主动爆破(全,需要自己搭建字典)
python3 sublist3r.py -d target.com -t 10 -o subdomains.txt
# 或者使用oneforall
python3 oneforall.py --domain target.com run
# 在线平台(免搭建)
https://dnsgrep.cn/
https://www.virustotal.com/
https://crt.sh/
真实案例: 某次给某大型企业做渗透测试,主站是www.company.com,扫描了几天没收获。后来通过子域名探测发现 dev.company.com(开发者测试平台),用的是Django框架,Debug模式没关,通过报错信息直接找到了数据库密码和管理员后台。
1.3 旁站与同IP查询
# 查同IP网站(旁站)
https://www.yougetsignal.com/ (输入IP查同服务器网站)
http://www.bypass.cn/sameip?domain=target.com
# Bing查旁站
bing search: ip:server_ip
核心思路: 一个服务器经常托管多个项目,旁站的安全投入往往比主站弱很多。拿下旁站 = 拿下同服务器主站的潜在入口。
二、端口探测:开放端口就是攻击面
2.1 高危端口快速定位
# nmap快速扫描常用高危端口
nmap -T4 -sV --open -p 21,22,23,25,80,443,445,1433,1521,3306,3389,5432,6379,8080,8443,27017 target.com
# 全端口扫描(需要更长时间)
nmap -T4 -sV -p 1-65535 --open target.com
# SYN半连接扫描(快,隐蔽)
nmap -sS -T4 -p 1-65535 target.com
2.2 常见高危端口与服务对应关系
| 端口 | 服务 | 风险 | 利用方式 |
|---|---|---|---|
| 21 | FTP | 匿名访问、弱口令 | 爆破/匿名登录,文件读写 |
| 22 | SSH | 弱口令 | 爆破/密钥登录 |
| 23 | Telnet | 明文传输 | 中间人窃取密码 |
| 445 | SMB | MS17-010 | 永恒之蓝,直接RCE |
| 1433 | MSSQL | 弱口令 | 爆破,xp_cmdshell提权 |
| 3306 | MySQL | 弱口令 | 爆破,直接读写文件 |
| 3389 | RDP | 弱口令/CVE | 爆破,CVE-2019-0708 |
| 5432 | PostgreSQL | 弱口令 | 爆破,UDF提权 |
| 6379 | Redis | 未授权 | 写Webshell/计划任务 |
| 8080 | Tomcat/Glassfish | 弱口令/文件上传 | 后台getshell |
| 9200 | Elasticsearch | 未授权 | 任意命令执行 |
| 27017 | MongoDB | 未授权 | 直接连接读数据 |
2.3 端口服务版本识别
# 服务版本识别
nmap -sV -sC target.com -p 445,3389,8080
# 漏洞脚本扫描(根据版本匹配CVE)
nmap --script vuln target.com -p 445
三、Web指纹识别:知己知彼
3.1 中间件与CMS指纹
# whatweb:识别Web服务器、编程语言、CMS类型
whatweb -a 3 https://target.com
# Wappalyzer浏览器插件(被动识别)
# 手工判断技巧:
# - 报错页面(Tomcat / JBoss / Weblogic各有特色报错)
# - HTTP头(X-Powered-By / Server / Via)
# - HTML源码注释(WordPress会留wp-content路径)
# - URL路径特征(/wp-admin/ /admin/ /manage/)
3.2 指纹识别结果的应用
识别出中间件后,对应关系如下:
| 中间件 | 高危漏洞 | 常用入口 |
|---|---|---|
| Tomcat | CVE-2020-1938(AJP文件包含)、弱口令后台 | /manager/html |
| Weblogic | CVE-2014-4210(SSRF)、CVE-2017-3506(反序列化) | /console |
| JBoss | CVE-2017-12149(反序列化) | /invoker |
| Apache Shiro | CVE-2016-4437(反序列化) | Cookie rememberMe |
| Spring | CVE-2018-1273(CVE-2022-22965) | /function executor |
| Struts2 | S2-045/S2-057 | 参数OGNL表达式 |
四、敏感目录与文件探测
4.1 目录扫描工具与使用
# dirsearch(Python,主流)
python3 dirsearch.py -u https://target.com -e php,html,js -t 20 -w /usr/share/wordlists/dirb/common.txt
# feroxbuster(Rust,快速,支持递归)
feroxbuster -u https://target.com -x php,html -t 20
# gobuster(支持DNS子域名爆破)
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt -x php,html
# 御剑目录扫描(Windows GUI,适合新手)
4.2 敏感文件检查清单
| 文件/目录 | 风险等级 | 说明 |
|---|---|---|
/robots.txt | 中 | 爬虫规则,往往暴露敏感路径 |
/crossdomain.xml | 低 | Flash跨域策略配置错误 |
/sitemap.xml | 低 | 网站结构信息泄露 |
/.git/ | 高 | Git源码泄露,用git-dumper拉取 |
/.svn/ | 高 | SVN源码泄露 |
/.DS_Store | 中 | Mac文件泄露目录结构 |
/backup/ /bak/ | 高 | 备份文件可直接下载 |
/uploads/ | 高 | 上传目录,可能有webshell |
/phpmyadmin/ | 高 | 数据库管理入口,弱口令 |
/admin/ /manage/ | 高 | 后台管理入口 |
/api/ /v1/ | 中 | API文档,可能有未授权接口 |
/swagger/ /apidoc/ | 中 | API文档泄露接口信息 |
4.3 Git源码泄露利用
# 使用git-dumper下载源码
git-dumper https://target.com/.git/ /tmp/target_source
# 如果Git目录可写,可能直接通过git hooks拿shell
# 找到.git/hooks目录,写入后门
五、社工信息收集:人是最薄弱的环节
5.1 邮箱与人员信息
# hunter.io(查公司邮箱格式和组织架构)
https://hunter.io/
搜索:公司名 → 得到邮箱命名规则(first.last@company.com)
# 邮箱反查泄露密码
# 在 https://haveibeenpwned.com/ 查邮箱是否在泄露库中
# linkedin/脉脉查员工信息
# 常用ID、社群、真实姓名 → 生成密码字典
密码复用攻击: 统计显示超过60%的人在不同平台使用相同密码。拿到一个平台的密码,很可能就是另一个平台的入口。
5.2 密码字典构建
社工字典是针对特定目标量身定制的密码字典:
# 使用cupp生成社工字典
python3 cupp.py -i
# 输入目标姓名、生日、手机、宠物名、公司名等信息
# 自动生成针对性密码字典
# 常用社工密码规则:
# 公司名+年份(company123)
# 姓名+生日(lisi19900101)
# 姓名+手机号(zhangwei138xxxx)
# 键盘走位(1qaz@WSX)
5.3 钓鱼信息准备
社工的另一层应用是钓鱼攻击:
- 邮件钓鱼: 通过hunter.io拿到邮箱格式后,伪造内部邮件发钓鱼链接
- 水坑攻击: 发现员工常访问的第三方网站,在那里植入恶意代码
- 短信钓鱼: 通过名字+手机号定向发钓鱼短信
注意: 社会工程学攻击在授权渗透测试中需要特别说明是否在测试范围内。
六、自动化信息收集框架
6.1 Oneforall集成化收集
# OneForAll,一站式资产收集
python3 oneforall.py --target target.com run
# 结果会保存在 results/target.com.csv
# 包含子域名、端口、旁站、邮箱等所有信息
6.2 Kunyu(伏羲)工具
# 视图空间测绘平台,自动化收集互联网资产
python3 konrun.py -k "company_name"
# 支持子域名、IP、端口、指纹、备案信息等
6.3 手动信息收集检查清单
完成信息收集后,建议整理成如下表格:
| 类别 | 收集内容 |
|---|---|
| 域名信息 | 真实IP、注册人、邮箱、到期时间 |
| 子域名 | 列表(重点关注dev/test/staging环境) |
| 旁站 | 同IP网站(评估服务器共用风险) |
| 端口 | 高危端口及对应服务版本 |
| 指纹 | 中间件、CMS、编程语言 |
| 目录 | 敏感文件(.git、.svn、backup、admin) |
| 社工 | 邮箱格式、员工ID、密码规则 |
七、信息收集后的利用思路
7.1 根据指纹选择漏洞利用方向
| 识别结果 | 优先测试漏洞 |
|---|---|
| WordPress | 插件漏洞、主题漏洞、xmlrpc.php |
| ThinkPHP | Route路径、RCE漏洞 |
| Struts2 | S2-045/S2-057 |
| Apache Shiro | 反序列化 |
| Spring | CVE-2022-22965 |
| Tomcat | 弱口令后台、war包部署 |
| Weblogic | SSRF + 反序列化利用链 |
7.2 根据端口选择横向方向
| 端口开放情况 | 可利用路径 |
|---|---|
| 22开放 | SSH弱口令/密钥复用 |
| 445开放 | MS17-010横向 |
| 3389开放 | RDP爆破/CVE-2019-0708 |
| 3306开放 | MySQL弱口令写入文件getshell |
| 6379开放 | Redis未授权写计划任务/SSH密钥 |
总结
信息收集不是"扫一扫"那么简单,它是一套系统化的目标侦察方法论:
- 资产发现:域名 → 子域名 → 旁站 → 同IP → 扩大攻击面
- 端口扫描:高频端口 → 版本识别 → 漏洞匹配
- 指纹识别:中间件 → CMS → 已知漏洞对应
- 目录探测:敏感文件 → 源码泄露 → 后台入口
- 社工收集:邮箱 → 人员 → 密码规则 → 密码复用
信息收集做得越细,后续漏洞利用就越顺利。下篇文章我会讲漏洞探测和利用的系统化思路,敬请期待。
关于作者
作者长期从事网络安全技术研究与实践,主要涵盖Web安全、渗透测试、内网渗透等领域。
如果你觉得这篇文章有帮助,欢迎收藏。需要进一步交流的同学,私信,专栏会持续更新。同时也有付费版的知识星球可供直接下载工具与源码,可以搜索 软件测试成长圈
更多推荐


所有评论(0)