目标:理解信息收集在渗透测试中的意义,熟悉常用工具用法,完成基本打点测试
一.理论学习:
模块 | 内容说明 |
---|---|
信息收集分类 | 主动信息收集 vs 被动信息收集 |
目标发现 | 子域名、IP、端口、子站点、目录、接口 |
技术指纹识别 | Web框架(如ThinkPHP)、CMS(如WordPress)、服务器中间件(如nginx、tomcat) |
OSINT 思路 | 从公开资源(百度、Shodan、Github)收集情报 |
工具准备 | 学会这些理论是后面用工具(如 nmap , whatweb )的基础 |
1.信息收集分类
主动信息收集:通过直接发起与北侧目标网络间的互动来获取相关信息,如通过Nmap扫描,直接访问网站目录,暴力破解子域名等(速度快,信息新且准确,但会留下访问痕迹)
被动信息收集:通过第三方服务间接获取目标网络相关信息,如搜索引擎查询,查询DNS历史记录,查看WHOIS信息等
(隐蔽性强,但信息可能不及时或不准确)
2.目标发现
1)子域名:大型网站往往有多个子域名,有些可能安全性较弱
方法:字典爆破工具,搜索引擎,SSL证书查询,DNS区域传输测试
2)IP:确定网站真实IP
方法:DNS历史记录查询,全球ping测试,查询MX记录,SPF记录等辅助信息,通过子域名可能找到真实IP
3)端口:确定开放的服务和潜在攻击面
方法:Nmap,masscan(高速扫描工具)
关键端口:
- web:80,443,8080,8443
- 数据库:3306(MySQL),5432(PostgreSQL)
- 远程管理:22(SSH),3389(RDP)
4)子站点/目录:发现隐蔽的管理后台,测试页面等
工具:dirsearch,gobuster,burp suite的intruder模块
6)接口:现代应用大量使用API接口,可能暴露敏感功能
方法:分析JS文件查找API端点,使用burp等代理工具捕获请求,检查/swagger/, /api-docs/等常见文档路径
3.技术指纹识别
1)Web框架识别:知道框架后可查找已知漏洞
-
方法:
-
HTTP响应头(X-Powered-By等)
-
默认错误页面特征
-
特定URL路径(如/thinkphp/...)
-
工具:whatweb, wappalyzer
-
2)CMS(内容管理系统)识别
-
常见CMS:
-
WordPress: 检查/wp-admin/, wp-includes/
-
Joomla: 检查/administrator/
-
Drupal: 检查/core/
-
-
工具:
-
CMSeek
-
在线工具:builtwith.com
-
3)服务器中间件识别:不同中间件有不同的配置方法和漏洞
-
常见中间件:
-
Nginx: Server头通常包含nginx版本
-
Apache: Server头包含Apache
-
IIS: 微软特有响应头
-
4.OSINT(开源情报)思路
1)搜索引擎技巧
-
Google Dorking:
-
site:example.com filetype:pdf
-
inurl:admin site:example.com
-
intitle:"index of" "parent directory"
-
2)Shodan:搜索联网设备
-
示例查询:
-
hostname:example.com
-
port:22 country:CN
-
product:nginx
-
3)Github情报收集:开发人员可能意外上传敏感信息
-
搜索技巧:
-
搜索公司名+关键词(password, secret, config)
-
检查.git目录泄露
-
查找历史提交中的敏感信息
-
4)其他
-
WHOIS查询:获取注册信息
-
社交媒体:LinkedIn员工信息
-
历史快照:archive.org查看网站历史版本
5.常用工具详解
1)Nmap
# 基本扫描
nmap -sV -O target_ip# 隐蔽扫描(不完成TCP握手)
nmap -sS -Pn target_ip# 脚本扫描(使用漏洞检测脚本)
nmap --script=vuln target_ip
2)WhatWeb
# 基本使用
whatweb http://example.com# 详细输出
whatweb -v http://example.com
3)Subfinder(子域名发现)
subfinder -d example.com -o subdomains.txt
4)dirsearch(目录爆破)
dirsearch -u http://example.com -e php,html,js -w /path/to/wordlist.txt
6.基本打点测试流程
-
确定范围:明确授权测试的域名/IP范围
-
被动收集:先通过OSINT方法收集信息
-
主动扫描:进行端口扫描、子域名爆破等
-
指纹识别:确定使用的技术栈
-
漏洞映射:根据技术栈查找已知漏洞
-
验证测试:对发现的潜在漏洞进行验证性测试
-
报告整理:记录所有发现,包括负面结果
二.工具实战
Amass&Httpx
被动枚举:(不跟目标通信)
amass enum -passive -d baidu.com
结果:
格式:<域名> → <记录类型> → <目标>:哪个域名通过什么记录类型关联到了哪个结果
记录类型 | 信息含义 | 实战用途 |
---|---|---|
A Record | 域名对应 IP | 后续 Nmap 扫描 |
CNAME | 指向别名域 | 检查外部服务、接管风险 |
MX | 邮件服务器 | 邮件相关服务探测 |
NS | DNS 服务器 | 枚举 NS、尝试 Zone Transfer |
ASN/IP段 | IP归属分析 | 扩展目标范围 |
主动枚举:(跟目标服务器通信)+保存结果
amass enum -active -d baidu.com -o amass_output.txt
1)格式化输出结果,提取子域名
grep -oE '[a-zA-Z0-9.-]+\.baidu\.com' amass_output.txt | sort -u > baidu_subs.txt
解释:用正则提取FQDN域名,sort -u去重,输出成只有子域名的一行一个的格式
2)探测子域是否可访问
httpx -l baidu_subs.txt -status-code -title -tech-detect -ip -o baidu_live.txt
3)识别潜在风险子域
cat amass_output.txt | grep "cname_record" | grep -v "baidu.com" > cname_candidates.txt
Nmap
功能 | 参数 | 说明 |
---|---|---|
扫描目标 | nmap target.com | 默认扫描常用端口 |
指定端口 | -p 80,443 | 扫描特定端口 |
所有端口 | -p- | 扫描所有 65535 个端口 |
快速扫描 | -F | 扫描常用 100 端口 |
服务识别 | -sV | 探测服务名称和版本 |
OS识别 | -O | 探测操作系统 |
使用脚本 | --script=xxx | 使用 NSE 脚本 |
输入文件扫描 | -iL list.txt | 从文件导入 IP 列表 |
输出 | -oN out.txt | 普通输出到文件 |
WhatWeb
用于识别网站所使用的技术栈,web服务器,中间件框架,CMS系统,编程语言,安全机制等
通过HTTP头部信息,HTML内容中的关键词或特征码,cookies中的特征字段,JS,CSS文件路径等进行识别
whatweb http://example.com
参数 | 含义 |
---|---|
-v | 显示详细信息(verbose) |
-a LEVEL | 识别级别(Aggression Level):从 1 到 4,默认 1,4 最激进 |
-U AGENT | 伪造 User-Agent |
-t | 设置并发线程数(默认1) |
-o FILENAME | 输出结果到文件 |
--log-verbose=FILENAME | 记录详细日志 |
--no-errors | 不显示错误信息 |
--proxy | 设置代理(如 Burp Suite) |
--color=never | 禁用颜色输出 |
用工具扫描vulhub实例
用whatweb进行技术指纹识别
用dirsearch进行目录扫描
nikto:自动检测常见漏洞,弱点配置
可进行路径遍历,文件泄露漏洞