1. 信息收集的核心维度解析
在安全测试和系统运维工作中,信息收集是最基础也是最重要的环节。就像医生诊断病情需要先做全面检查一样,对目标系统的了解程度直接决定了后续工作的效果。我从业十年来发现,90%的成功渗透都源于前期细致的信息收集。
信息收集主要围绕三个核心维度展开:目录结构、端口服务和API接口。这三个维度如同系统的"骨骼"、"血管"和"神经"——目录结构展示了系统的组织方式,端口服务反映了系统的功能模块,API接口则揭示了系统的数据交互路径。接下来我将结合实战经验,详细拆解每个维度的收集方法和技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 目录结构探测实战
2.1 常见目录扫描工具对比
御剑、DirBuster和dirsearch是三种最常用的目录扫描工具。御剑适合Windows环境快速扫描,它的优势在于支持自定义字典和线程控制。我常用配置是:
bash复制线程数:20-30(过高易触发防护)
超时时间:3秒
字典:使用自建的混合字典(包含常见CMS路径)
DirBuster作为Java工具跨平台性更好,特别适合递归扫描。它的爆破模式可以组合目录名和文件名,这在发现深层目录时特别有用。建议配合以下参数:
bash复制-workers 10
-retry 3
-delay 100ms
dirsearch作为Python工具灵活性最高,我经常修改其源码实现特殊需求。比如添加对.git目录的自动识别功能,这在发现源码泄露时非常有效。
2.2 目录扫描的进阶技巧
常规扫描容易被WAF拦截,我总结了几种绕过方法:
- 修改User-Agent为搜索引擎爬虫(如Googlebot)
- 使用随机延迟(100-500ms)模拟人工操作
- 对URL进行双重编码处理
- 通过CDN节点发起请求
对于特定CMS,建议使用针对性字典。比如WordPress可以重点扫描:
code复制/wp-admin/
/wp-includes/
/wp-content/uploads/
/xmlrpc.php
重要提示:扫描前务必确认授权范围,未经许可的扫描可能涉及法律风险。建议在测试环境中先用nmap -p80 --script http-enum先进行基础探测。
3. 端口服务探测深度解析
3.1 Nmap的高级用法
Nmap是端口扫描的瑞士军刀,但大多数人只用到了基础功能。以下是我在大型内网渗透中总结的实战命令:
全端口快速扫描:
bash复制nmap -T4 -Pn -n -p- -v <target> --open
服务版本探测:
bash复制nmap -sV -sT -Pn -n -p <开放端口> <target>
防火墙规避扫描:
bash复制nmap -f --data-length 24 -D RND:5 --scan-delay 1s <target>
对于Windows主机,特别要注意135/139/445等端口的扫描技巧。当遇到端口过滤时,可以尝试:
bash复制nmap --script smb-os-discovery -p445 <target>
3.2 特殊端口处理经验
在实战中遇到过几个典型问题及解决方案:
端口占用冲突:
Windows下出现"通常每个套接字地址只允许使用一次"错误时,通过以下步骤解决:
- netstat -ano | findstr <端口号>
- taskkill /PID <进程ID> /F
端口连通性测试:
除了telnet,更推荐使用:
powershell复制Test-NetConnection <IP> -Port <端口>
对于Ubuntu的10080端口问题,通常是代理设置冲突导致,检查:
bash复制grep -r "10080" /etc/
4. API接口信息收集方法论
4.1 API发现技术
现代Web应用大量使用API接口,我发现主要通过以下几种方式收集:
-
爬虫抓取:
使用Burp Suite的爬虫功能,配置如下:- 设置Scope为目标域名
- 开启"Only scan in-scope items"
- 设置爬虫深度为3-5
-
JS文件分析:
通过Chrome开发者工具的Sources面板,搜索关键词:code复制/api/v1/ axios.get( fetch( -
历史漏洞利用:
对已知框架(如Swagger)尝试默认路径:code复制
/swagger-ui.html /api-docs
4.2 API安全测试要点
收集到API后,重点检查以下方面:
-
认证机制:
- JWT令牌是否可破解
- API Key是否硬编码
- OAuth流程是否完整
-
参数测试:
bash复制curl -X POST "https://target/api/user" -H "Authorization: Bearer xxx" -d '{"user_id":"1'\"' OR 1=1--"}' -
速率限制:
通过脚本测试请求频率限制:python复制import requests for i in range(100): r = requests.get('https://target/api/data') print(f"Status: {r.status_code}")
5. 综合实战案例
去年在某次授权测试中,我通过组合技术发现了重大漏洞:
-
先用dirsearch发现.git目录泄露:
bash复制
python3 dirsearch.py -u https://target -e * -x 403,404 -w git-dict.txt -
使用git-dumper下载源码:
bash复制
git-dumper https://target/.git/ ./output -
分析源码找到API端点:
python复制grep -r "app.route(" ./output -
端口扫描发现未授权的Redis服务:
bash复制
nmap -p6379 --script redis-info <target> -
通过未授权Redis获取管理员会话,最终控制整个系统。
这个案例展示了信息收集各环节如何环环相扣。关键在于保持耐心,像拼图一样把零散信息组合起来。
6. 防御建议
基于攻击经验,我总结了几点有效的防御措施:
-
目录防护:
- 配置正确的robots.txt
- 对敏感目录设置IP白名单
- 定期检查.git等目录是否暴露
-
端口安全:
powershell复制# Windows防火墙规则示例 New-NetFirewallRule -DisplayName "Block External Redis" -Direction Inbound -LocalPort 6379 -Action Block -
API保护:
- 实施严格的速率限制
- 关闭不必要的HTTP方法
- 对敏感API启用双因素认证
信息收集与防护是永无止境的博弈。保持对新技术的学习,定期检查系统暴露面,才能有效降低风险。在实际操作中,我发现很多问题都源于基础配置疏忽,所以建议从这些基础环节开始加固。
