一、子域名收集
子域名收集目的: 枚举出一个主域名下所有可能存在的子域名。比如拿到目标是 example.com
,那要找到它的:
api.example.com
admin.example.com
mail.example.com
test.example.com
...
这些子域可能有:
测试系统(test)
内网穿透服务(vpn、intranet)
后台登录(admin)
上传接口(upload)
暴露数据库、FTP、CMS 系统等
一句话总结:子域名越多 → 攻击面越大 → 漏洞机会越多。
1. 子域名收集方法分类
分类 | 方式 | 优点 | 缺点 |
---|---|---|---|
被动收集 | 利用公开数据源 | 隐蔽、安全、快 | 有遗漏、受限于数据源 |
主动探测 | DNS爆破、字典构造 | 能找出隐藏子域 | 慢、易被目标检测 |
验证存活性 | DNS请求 +解析验证 | 排除无效域名 | DNS 查询次数大 |
2. 主力工具详解
1)subfinder(被动收集)
简介:
开源项目,Golang 编写。
利用公开数据源收集子域名,如:Crt.sh、Shodan、FOFA、Censys、Certspotter、DNSDumpster 等。
默认配置已经很强大,还可以配置 API,增强能力。
安装(需要先安装 Golang):
# 下载并安装
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
基本用法:
# 扫一个域名
subfinder -d example.com
# 输出保存到文件
subfinder -d example.com -o result.txt
# 多线程 & 验证可达性
subfinder -d example.com -all -o result.txt
配置 API 密钥(增强数据源):
编辑配置文件(默认路径):
~/.config/subfinder/provider-config.yaml
2)ksubdomain(主动探测)
简介:
国人开发的高性能 DNS 爆破工具。
适合用于对 subfinder 的结果进一步验证 + 使用字典爆破新子域名。
使用“验证模式”和“探测模式”配合效果最佳。
安装:
go install github.com/knownsec/ksubdomain@latest
使用场景一:验证 subfinder 的结果
ksubdomain verify -f subfinder结果.txt -o alive.txt
使用场景二:主动爆破子域名
ksubdomain enum -d example.com -f dict.txt --only-domain -o alive.txt
参数说明:
-d
:目标域名-f
:字典文件(子域前缀,如:www、admin、api)--only-domain
:只显示成功的域名
推荐字典(子域爆破):
Seclist 提供的子域名字典
一些常用的字典路径:
./dict/2w-subnames.txt
./dict/top1000.txt
3. 实战流程
目标:找出 example.com
的子域名并验证哪些是活的
# 第一步:使用 subfinder 被动收集
subfinder -d example.com -o sub.txt
# 第二步:用 ksubdomain 验证哪些是活的
ksubdomain verify -f sub.txt -o alive.txt
# 第三步(可选):爆破未知子域名
ksubdomain enum -d example.com -f ./dict/2w-subnames.txt -o brute.txt
# 第四步(可选):整合所有结果、去重
cat alive.txt brute.txt | sort -u > all_alive.txt
4. 实战技巧
技巧 | 描述 |
---|---|
添加 API 配置 | subfinder 配置 Certspotter、Crt.sh、Shodan 等 API,效果翻倍 |
配合 dnsx 使用 | 对结果进行端口扫描,发现 Web 服务(配合后续目录扫描) |
DNS NS 泄露 | 有时通过 NS、MX 记录可以发现额外子域 |
配合 FOFA 查询 | domain="example.com" + "*.example.com" 获取子域 |
子域变换 | 多观察子域规律(如 test1、test2、admin1、admin2)构造变形爆破字典 |
补充
全流程自动化工具推荐
OneForAll:整合被动+爆破+验证,一站式工具
Amass:国外非常强大的子域枚举工具,支持 ASN、WHOIS、DNS 查询、图结构等,但较慢
二、端口扫描
端口扫描(Port Scanning) 是渗透测试中最基础但极其重要的一步。
目的:
识别目标主机是否存活
查找目标主机开放了哪些端口(TCP/UDP)
识别运行在这些端口上的服务及其版本
为后续漏洞利用打基础(如:发现 22 → 爆破 SSH,80 → 探测 Web 服务)
1. 端口和协议基础知识
端口(Port)
端口号范围:0 ~ 65535
常见端口举例:
端口 | 服务 | 描述 |
---|---|---|
21 | FTP | 文件传输协议 |
22 | SSH | 远程连接协议 |
23 | Telnet | 明文远程控制协议 |
25 | SMTP | 邮件发送协议 |
53 | DNS | 域名解析 |
80 | HTTP | 网站服务(明文) |
443 | HTTPS | 网站服务(加密) |
3306 | MySQL | 数据库 |
6379 | Redis | 内存数据库 |
2. 端口扫描类型
1)TCP 连接扫描(全连接)
与目标端口建立完整的三次握手。
稳定、准确,但慢且易被发现。
2)TCP SYN 扫描(半连接)
发送 SYN,不完成三次握手(对方回复 SYN-ACK 即认为端口开放)。
快速、隐蔽,默认方式(nmap 的 -sS)
3)UDP 扫描
探测 UDP 服务(无连接协议,容易漏报、慢)。
适用于 DNS(53)、SNMP(161)等。
4)XMAS、FIN、NULL 扫描(更隐蔽)
利用异常 TCP 包探测端口状态。
一般用于防火墙绕过场景。
3. 主力工具:nmap
安装(Linux)
sudo apt update
sudo apt install nmap
4. nmap 常用命令详解
1)Ping 扫描(主机存活)
nmap -sn 192.168.1.0/24
2)常规端口扫描(TOP 1000)
nmap 192.168.1.1
3)指定端口扫描
nmap -p 21,22,80,443 example.com
4)扫描全部端口(0-65535)
nmap -p- 192.168.1.1
5)SYN 扫描(默认扫描方式)
nmap -sS 192.168.1.1
6)服务识别(运行了什么服务)
nmap -sV 192.168.1.1
7)操作系统识别
nmap -O 192.168.1.1
8)脚本扫描(常用于漏洞发现)
nmap -sV --script=vuln 192.168.1.1
9)扫描并保存结果
nmap -sS -p 1-1000 -oN result.txt 192.168.1.1
5. 实战流程建议(针对单个目标)
# 第一步:判断主机是否存活
nmap -sn target.com
# 第二步:全端口扫描
nmap -p- -T4 -v target.com
# 第三步:识别服务版本
nmap -sV -p 22,80,443 target.com
# 第四步:漏洞脚本检测
nmap --script=vuln -p 80,443 target.com
6. 配合使用的其他工具
工具名 | 用途 |
---|---|
masscan | 超快速端口扫描工具,适合大段 IP |
zmap | 大规模互联网扫描 |
naabu | ProjectDiscovery 出品,简洁快速 TCP 扫描器 |
rustscan | rust 编写的超快扫描器,可对接 nmap |
7. 实战技巧
技巧 | 说明 |
---|---|
-T5 参数 |
加快扫描速度,但容易被发现 |
--top-ports 100 |
扫描最常见的端口 |
--script=banner |
获取服务 banner |
使用 VPN 或代理 | 隐藏扫描源 IP |
输出保存为 XML/HTML | 方便后续自动化分析 |
配合子域/IP 列表扫描 | 如:nmap -iL ip_list.txt |
8. 实际意义:扫描结果的价值
发现端口 | 后续方向 |
---|---|
80/443 | 网站目录扫描、CMS识别、漏洞利用 |
21/22 | 爆破弱口令、远程控制入口 |
3306 | 数据库未授权访问 |
6379 | Redis 未授权利用 |
任意端口 | 指纹识别 → 确定服务类型 → 匹配漏洞 |
9. 示例:配合 FOFA/Hunter 收集后自动化扫描
# 获取目标IP列表(用 FOFA 搜索)
domain="example.com"
# 写入文件后批量扫描端口
nmap -iL ip_list.txt -sS -p- -oN result.txt
三、指纹识别
指纹识别是渗透测试中识别目标系统信息的过程,类似“侦察敌人部队”,目的是尽可能明确目标系统的组成结构,为下一步漏洞利用或逻辑分析做准备。
1. 指纹识别的目标
类别 | 示例 | 后续意义 |
---|---|---|
操作系统 | Windows Server、CentOS、Ubuntu | OS 级漏洞判断、提权路线 |
Web 服务 | Apache、Nginx、IIS、Tomcat | 利用服务组件漏洞(如 Struts) |
Web 框架 | ThinkPHP、SpringBoot、Laravel | 针对框架的逻辑绕过或命令执行漏洞 |
中间件 | JBoss、WebLogic、Resin | 中间件 RCE、反序列化攻击 |
数据库 | MySQL、MongoDB、Redis | 探测弱口令、未授权 |
CMS 系统 | WordPress、Discuz、Joomla | 利用已知漏洞 |
2. 工具和平台详解
1)Nmap 指纹识别(主动)
核心功能
使用
-sV
检测服务版本使用
-O
识别操作系统使用
--script
执行脚本识别技术栈与组件
示例命令
# 服务版本识别
nmap -sV 192.168.1.1
# 操作系统识别
nmap -O 192.168.1.1
# 指定端口服务识别
nmap -sV -p 80,443,22 target.com
# 使用 NSE 脚本(如 banner 抓取)
nmap --script=banner -p 80 target.com
输出结果示例
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
80/tcp open http Apache httpd 2.4.6 ((CentOS))
使用 NSE(Nmap 脚本引擎)进行深入指纹识别:
nmap --script=http-enum -p 80 target.com
nmap --script=http-headers -p 80 target.com
nmap --script=http-title -p 80 target.com
2)FOFA 指纹识别(被动)
FOFA 是国内最强大的网络空间搜索引擎之一
原理:通过全球扫描获取网页特征(如响应头、标题、证书、favicon hash、body 内容等),匹配指纹库。
精度极高,常用于资产测绘、定位子域名、识别 CMS、中间件等。
示例查询语法
# 查询百度所有子域名
domain="baidu.com"
# 查询使用 Apache 服务的 IP
server="Apache"
# 查询使用 WordPress 的网站
body="wp-content"
# 查询返回头中含有 nginx
header="nginx"
指纹识别字段(FOFA 提供):
title
:网页标题header
:响应头server
:Web Server 类型cert
:SSL 证书内容body
:网页正文icon_hash
:favicon 特征值(常用于 CDN 绕过 + 识别同类网站)
3)Hunter(鹰图)
功能说明:
也是一个强大的被动信息收集平台。
提供站点服务识别、开放端口、中间件类型、备案信息等。
对 WebLogic、Tomcat、SpringBoot、PhpStudy 等识别准确度较高。
使用方式
登录 Hunter(https://hunter.qianxin.com)
输入目标域名或 IP
查看目标资产结构,包括:
端口服务识别
网站响应特征
中间件(WebLogic、JBoss、Resin)
证书信息
4)Quake(360 网络空间搜索引擎)
特点:
对国内站点覆盖面极广
可以通过字段组合进行精细化资产探测
查询示例:
# 查找使用 Tomcat 的网站
service:tomcat
# 查找返回头含有 nginx 且备案在中国的站点
header:"nginx" AND is_domain:true AND cert.country="CN"
# 查找 title 为“管理系统”的 Web 页面
title="管理系统"
3. 实战流程建议
# Step 1:用 subfinder/fofa/hunter 收集域名/IP
# Step 2:用 nmap 对目标进行端口扫描 + 指纹识别
nmap -sS -sV -O -p- target.com
# Step 3:结合 FOFA / Hunter / Quake 查看网站指纹
# 判断使用的中间件、框架、CMS、端口服务等
# Step 4:通过识别结果查找漏洞(例如 Apache 2.4.49 RCE)
4. 技巧
技巧 | 描述 |
---|---|
FOFA icon_hash | 通过 favicon 图标指纹识别系统类型(极其准确) |
nmap NSE 脚本库 | 支持漏洞探测、目录爆破、数据库识别等 |
多平台交叉验证 | fofa/hunter/quake 数据差异互补性强 |
HTTP Header 指纹 | Server 、X-Powered-By 等字段是识别关键 |
使用 Python 自动调用 API | 可自动化资产识别与分类 |
总结
工具/平台 | 类型 | 特点 |
---|---|---|
Nmap | 主动 | 扫端口+服务+操作系统识别 |
FOFA | 被动 | 精准识别 Web 组件/中间件 |
Hunter | 被动 | 国内企业服务识别能力强 |
Quake | 被动 | 对国内站点特征匹配出色 |
四、CDN 绕过
CDN 绕过(绕过内容分发网络 Content Delivery Network,获取真实服务器 IP)是渗透测试中非常重要的一步。
许多网站会通过 CDN 来隐藏源站 IP,以防止攻击者直接访问或攻击真实服务器。所以如果想继续做端口扫描、漏洞利用、或进行 DDoS,首先要绕过 CDN,获取真实 IP。
为什么要绕过 CDN?
问题 | 说明 |
---|---|
无法扫描 | CDN IP 不是真实服务器,扫描到的是 CDN 节点端口 |
误打目标 | 很可能攻击到阿里云、百度云等 CDN 节点,违法风险高 |
找不到漏洞 | CDN 屏蔽了 WAF 后端逻辑,真实服务入口无法访问 |
无法提权 | 无法判断真实服务器操作系统、服务、后台管理等 |
1. CDN 的工作机制简述
用户浏览器 ——> CDN 节点 ——> 源站真实服务器
例如:
你访问 www.target.com
DNS 会将其解析到 CDN(比如 Cloudflare 的 104.20.X.X)
而真实 IP 是在中国阿里云 42.X.X.X
2. 判断一个站点是否使用了 CDN
判断方法:
方法 | 示例工具 | 说明 |
---|---|---|
DNS 解析多个 IP | dig 、nslookup |
一个域名返回多个不同 IP,且 IP 所属厂商不同 |
Ping 多次 IP 变化 | ping、tracert | 每次 ping 到不同 IP,说明被 CDN 代理 |
IP Whois | ipinfo、IPIP | 查 IP 归属地,发现是 Cloudflare、腾讯云加速等 |
使用在线服务 | FOFA、Censys、Quake | 看到域名与 IP 显著不符,或 IP 属于 CDN 节点 |
示例命令:
nslookup www.target.com
whois 104.20.23.6
curl -I http://target.com
# 查看 Server 字段:可能是 cloudflare/nginx 等
3. CDN 绕过的常见方法
1)被动信息泄露(最常用)—— FOFA/Hunter/Quake 搜真实 IP
通过网络空间搜索引擎查询同一个域名曾经暴露过的 IP。
例子:FOFA 搜索语法
title="公司名称" && status_code=200 && country="CN"
cert.subject="target.com"
domain="target.com"
例子:Quake 搜索语法
hostname:target.com && ip!="CDN IP段"
目的:
找到非 CDN IP 但和该域名证书/组件一样的主机
很可能是源站或历史泄露过的真实 IP
2)DNS 泄露法
扫描二级域名:有些子域名未上 CDN,直接暴露真实 IP。
使用工具:
subfinder
、ksubdomain
、oneforall
subfinder -d target.com
然后:
dig sub1.target.com +short
子域名如 api.target.com
、dev.target.com
、test.target.com
常未接入 CDN。
3)历史记录查询(快照 & DNS 记录)
使用工具:SecurityTrails、Crt.sh、Shodan Historical IP、ViewDNS
查找该域名曾经绑定过的真实 IP(CDN 未启用时)
例如:
https://securitytrails.com/domain/target.com/history
https://viewdns.info/iphistory/?domain=target.com
4)邮件服务器记录泄露
邮件系统通常不会接入 CDN,例如:MX、SMTP、POP3 服务
nslookup -q=mx target.com
然后对返回 IP 进行指纹识别(可能跟 Web 服务在同一台机器)
5)旁站探测 / C 段分析
找到可能共用服务器的其他网站,找到其中未上 CDN 的网站 IP
工具和平台:
FOFA:
ip="x.x.x.x"
站长工具:旁站查询
ZoomEye/Shodan 查询 C 段资产
6)Web 应用错误信息泄露(headers)
某些情况下后端配置错误可能暴露源 IP:
X-Forwarded-For
X-Real-IP
Via
Host
示例:
curl -I https://target.com
X-Real-IP: 42.80.12.1
7)邮件/防火墙配置文件泄露
如 Web 服务 /robots.txt
、.git
泄露中包含真实 IP 的注释或内部接口。
4. 绕过后验证是否为真实 IP
找到一个 IP,必须判断它是否真的是源站 IP,不是 CDN。
验证方法:
方法 | 判定标准 |
---|---|
直接访问 IP | 如果跳转到对应域名,或页面内容一致,即为真实 IP |
发包 Host 伪造 | 使用 Host: target.com 请求 IP,看响应 |
比较页面相似度 | 页面是否与 CDN 域名访问的一致 |
判断 CDN IP 段 | 通过 IP whois 判断是否为 Akamai、Cloudflare、百度云等 CDN |
示例:访问 IP 加 Host
curl http://42.80.12.1 -H "Host: target.com"
如果能看到目标网页,即为真实 IP。
5. 自动化工具推荐
工具名 | 功能描述 |
---|---|
CDNHunter | Python 脚本,自动化子域名 + IP 对比 |
Findcdn | CDN 识别与绕过集合脚本 |
FOFA SDK | 调用 FOFA API 自动枚举历史 IP |
OneForAll | 子域名收集 + CDN 判断 |
6. 典型实战案例流程
用
subfinder
收集子域名用
dig
/dnsx
判断是否接入 CDN用 FOFA 查询该域名历史 IP、旁站、title 搜索
用 curl 发包,验证是否是源站 IP
记录真实 IP,用 nmap 进行端口扫描
总结
CDN 是一块盾,绕过了它,才真正面对了“裸奔的敌人”。
五、IP 真实地址探测
“真实 IP”指的是网站或系统后端源站服务器的公网 IP 地址。这个地址直连服务器,不受 CDN 等中间层保护,是渗透测试者真正想要获取的目标。
为什么要探测真实 IP?
原因 | 说明 |
---|---|
绕过 CDN 安全保护 | CDN 带有 WAF、防扫描机制,源站没有 |
方便端口扫描与漏洞利用 | 扫 CDN IP 无用,扫描源站才有结果 |
便于提权、后门植入 | 拿下 CDN 没意义,目标是控制真实服务器 |
可以做社工 | 知道源站归属 ISP、地区、单位后可做定向钓鱼 |
1. IP 真实地址探测的常用方法
方法一:子域名未接 CDN 泄露真实 IP(高命中)
很多网站主域加了 CDN,但测试子域、接口域、运维域等没加。
步骤:
1. 使用子域名收集工具如 subfinder
/ ksubdomain
:
subfinder -d target.com -o subs.txt
2. 对每个子域名进行 DNS 解析:
dnsx -l subs.txt -a -resp
3. 找到那些解析到非 CDN IP 的子域名。
特征:
子域如
dev.target.com
、api.target.com
、test.target.com
、vpn.target.com
常未接 CDN。一旦解析出 IP,继续用 curl 加 host 测试页面内容。
方法二:历史 IP 地址泄露(中命中)
工具平台:
ViewDNS
步骤:
查询域名历史解析记录或历史证书绑定 IP。
找出老 IP,对其测试是否仍可访问目标页面。
方法三:SSL 证书绑定 IP 查询(低调实用)
许多站点证书绑定的 IP 地址是服务器真实地址。
方法:
FOFA 查询:
cert.subject="target.com" && ip!="CDN IP段"
crt.sh、Censys、Shodan 上查找绑定证书的 IP。
方法四:旁站分析 / 同 IP 网站分析
找出目标 IP 的同服务器网站,看哪个没加 CDN。
工具:
FOFA:输入 IP,看关联域名
ZoomEye:搜索 C 段
C 段扫描工具(如 nmap + masscan)
站长工具(旁站查询)
方法五:邮件服务器 IP 泄露(常见)
公司的邮件服务器通常没用 CDN,IP 直接暴露。
nslookup -q=mx target.com
返回邮件服务器的域名,再 dig
或 ping
看 IP。
方法六:网页 header 泄露真实 IP(常见)
一些响应头可能包含 X-Real-IP
、X-Forwarded-For
等真实 IP。
curl -I http://target.com
注意:
X-Real-IP: 39.107.123.15
方法七:社工类侧信道(如 JS、API 返回)
网页中某些资源引用、接口 API 返回 JSON 中可能带真实 IP
如:
"http://42.123.5.8/assets/logo.png"
或接口返回:
"server_ip": "39.98.113.77"
可以结合:
JS 静态分析(BeautifulSoup / AST)
Burp 抓包看所有请求
方法八:邮件头 / 日志信息泄露(中高级技巧)
与目标通信,如发邮件、注册账户,然后查看收到邮件头信息
邮件头中
Received:
字段经常暴露源 IP
2. 真实 IP 验证方法(确认是否为源站)
找到一个 IP 后,要确认它是不是目标真实服务器 IP。
验证方式 | 步骤 |
---|---|
curl 发送 Host 头 |
curl http://42.x.x.x -H "Host: target.com" |
对比页面 | 看返回的网页是否与访问域名一样 |
ping & tracert | 判断延迟、路径是否合理 |
访问 IP 看是否跳转 | 正常源站常会跳转到域名 |
用 nmap 扫描该 IP | 看是否开放 Web 常见端口(80/443/8080/8443) |
3. 自动化脚本框架(Python 伪代码)
import requests
from subfinder import get_subdomains
from dns_resolver import resolve_ip
subs = get_subdomains("target.com")
for sub in subs:
ip = resolve_ip(sub)
if ip and not is_cdn_ip(ip):
res = requests.get(f"http://{ip}", headers={"Host": "target.com"})
if "target site keyword" in res.text:
print(f"[+] Real IP Found: {ip} for {sub}")
4. 技巧
源 IP ≠ 所有服务 IP,有些站子用源站暴露了接口子域。
不是越新 IP 越安全,一些新 IP 是被废弃的旧资源再利用。
看证书、标题、响应长度,都可以帮助对比源站/伪站。
总结
真实 IP 是渗透的钥匙,绕过“伪装”直击本体,是信息收集阶段的灵魂所在。
六、网站目录扫描
网站目录扫描(Directory Bruteforcing)是渗透测试中非常关键的一步,它的目的是探测出 Web 服务器上隐藏的目录、文件,可能会暴露管理后台、配置文件、调试页面、未授权的接口等重要资源。
1. 目录扫描的意义
无法通过正常浏览页面看到网站的全部结构,而隐藏的目录或文件可能包含:
类型 | 示例 |
---|---|
管理后台 | /admin/ 、/login/ 、/manage/ |
开发残留 | /test/ 、/backup/ 、/dev/ |
敏感文件 | .git/ 、.env 、config.php |
接口暴露 | /api/ 、/v1/ 、/internal/ |
第三方服务路径 | /phpmyadmin/ 、/jenkins/ |
这些路径若未做权限限制,直接访问就是重大风险。
2. 核心原理(怎么做的)
目录扫描是“字典暴力+请求响应判断”的过程:
使用工具从字典中读取可能存在的路径。
拼接成完整 URL(如
https://example.com/admin/
)。向服务器发送 HTTP 请求。
判断响应状态码(200、403、401 等)和返回内容长度。
记录可能有效的路径。
3. 常用工具:dirsearch、gobuster
1)dirsearch(Python 编写,功能强)
安装:
git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
pip install -r requirements.txt
基本用法:
python3 dirsearch.py -u https://target.com -e php,html,js
常用参数:
参数 | 作用 |
---|---|
-u |
目标 URL |
-e |
限定扩展名(如:php,html) |
-x |
排除某些扩展 |
-w |
使用自定义字典 |
--random-agents |
使用随机 UA |
--proxy |
设置代理 |
--header |
添加自定义请求头 |
示例:
python3 dirsearch.py -u https://test.com -e php,html,js -w /path/to/rockyou.txt --random-agents
2)gobuster(Go 编写,速度快,适合大规模)
安装(Kali 默认自带):
sudo apt install gobuster
基本用法(dir 模式):
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt
参数说明:
参数 | 说明 |
---|---|
-u |
目标地址 |
-w |
字典路径 |
-x |
扫描扩展(如 php,txt) |
-k |
跳过 SSL 验证 |
-t |
并发线程数 |
-r |
不跟随重定向 |
示例:
gobuster dir -u https://target.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html -t 50
4. 常用字典推荐
名称 | 路径(Kali) | 描述 |
---|---|---|
common.txt | /usr/share/wordlists/dirb/common.txt |
基础目录字典 |
directory-list-2.3-medium.txt | /usr/share/wordlists/dirbuster/ |
中等体积字典 |
raft-* | 自行下载(SecLists) | 精细分类(文件/目录/大小写) |
自定义字典 | 自建或 GitHub 搜集 | 结合行业特征更有效 |
5. 响应码如何判断是否存在?
状态码 | 含义 | 是否记录 |
---|---|---|
200 | 存在 | 是 |
301/302 | 重定向 | 是 |
403 | 禁止访问,但存在 | 是(非常有价值) |
401 | 需要认证 | 是 |
404 | 不存在 | 否 |
500 | 服务器异常 | (视情况保留) |
很多重要路径返回 403,比如:
https://target.com/.git/ → 403 Forbidden
说明它存在但被限制访问,可以尝试目录穿越等方式绕过。
6. 技巧
扩展扫描:加上
-e php,html,txt
可扫出文件。404 页面统一怎么办?:先访问一个乱七八糟的路径看看 404 响应体,对比内容长度。
延迟大怎么办?:加
--timeout
或-t 20
控制并发线程。被 ban 怎么办?:加
--random-agents
、代理池、加时间间隔。
7. 目录扫描与爆破结合
登录接口爆破(搭配
hydra
)探测后台弱口令(如
/admin/login.php
)扫描 RESTful API 接口(如
/api/v1/users
)JSON、GraphQL 接口枚举
WebSocket 接口爆破
小结
工具 | 优势 | 适用场景 |
---|---|---|
dirsearch | 功能强,兼容性好 | 精细化渗透测试 |
gobuster | 多线程高效 | 大站、CDN 后大型目标 |
七、常见中间件识别
在渗透测试中,识别目标站点使用的中间件(Web Server/应用服务器) 是至关重要的一环,因为不同的中间件有不同的漏洞、配置特征和攻击手法。
什么是中间件?
中间件通常指 Web 服务器或应用服务器,它们位于操作系统与应用程序之间。常见的中间件有:
名称 | 类型 | 常见端口 | 说明 |
---|---|---|---|
Apache | Web Server | 80/443 | 开源老牌 Web 服务器 |
Nginx | Web Server | 80/443 | 高性能反向代理、负载均衡 |
Tomcat | 应用服务器 | 8080 | Java Web 容器,执行 JSP/Servlet |
IIS | Web Server | 80/443 | Windows 自带的 Web 服务 |
WebLogic | 应用服务器 | 7001 | Oracle 出品,企业常用 |
为什么要识别中间件?
找对应漏洞(如 Apache Shiro、Tomcat 任意文件上传)
匹配 CVE 漏洞版本
制定攻击路径(路径穿越、默认路径、弱口令等)
判断 Web 环境(Java?PHP?ASP?)
1. 常见的识别方式
方法一:HTTP 头信息分析
最直接的方式就是访问网页查看响应头:
curl -I http://target.com
可能得到:
Server: Apache/2.4.18 (Ubuntu)
X-Powered-By: PHP/7.4.3
也可能是:
Server: nginx
Server
字段通常直接暴露中间件名称和版本。
方法二:使用 nmap 指纹识别
nmap 有强大的探测功能,可以识别服务及版本:
nmap -sV -p 80,443,8080,7001 target.com
例子输出:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.6 ((CentOS))
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
常用参数:
-sV
:版本探测-p
:指定端口(Web 常见端口有:80、443、8080、7001、8000、8888)
方法三:使用在线平台(FOFA、Quake、Hunter)
比如在 fofa.so 搜:
title="Apache Tomcat"
server="nginx"
或者:
app="Apache Tomcat"
app="Nginx"
可以获得目标 IP、端口、中间件类型及其版本。
方法四:访问特征路径/页面
中间件会暴露一些特定路径或页面,可以据此判断类型:
中间件 | 特征路径 | 特征信息 |
---|---|---|
Apache | /server-status (需未禁用) |
服务器状态页面 |
Nginx | 错误页含 "nginx" 字样 | 页面响应特征 |
Tomcat | /manager/html 、/docs/ |
后台管理页、文档页 |
WebLogic | /console/login/LoginForm.jsp |
控制台登录页 |
IIS | 错误页含 IIS 、.aspx 文件 |
ASP.NET 页面结构 |
方法五:指纹识别工具
1)whatweb
whatweb http://target.com
输出示例:
http://target.com [200 OK] Apache[2.4.18], PHP[7.2.24], Country[CN]
2)wappalyzer(浏览器插件)
自动识别技术栈、Web Server、框架(Java、Laravel、WordPress 等)
3)nuclei + fingerprint 指纹模板
使用 nuclei + CMS/Web 服务器识别模板:
nuclei -u http://target.com -t technologies/
方法六:错误页面分析
例如访问不存在的路径 /aaaabbbbcccc
,返回:
Apache Tomcat/9.0.45 - Error report
或者:
403 Forbidden - nginx
这类页面信息能透露中间件名称和版本。
2. 不同中间件的常见漏洞类型(选对目标很重要)
中间件 | 漏洞方向 |
---|---|
Apache | mod_cgi 远程命令执行、Shiro 反序列化 |
Nginx | 配置穿越、未授权代理 |
Tomcat | 任意文件上传、弱口令、RCE |
WebLogic | 反序列化、路径穿越、RCE |
IIS | 解析漏洞、短文件名、路径穿越 |
3. 技巧
如果
Server
头被隐藏,可尝试:抓包响应包(Burp Suite)
看错误页面
扫描特征路径(如
/manager/html
)
对多个端口执行识别(如 80、443、8080、8443、7001)
遇到 Tomcat/WebLogic 等要优先尝试弱口令
高并发扫描建议配合 proxychains、rate limit
总结
检测方式 | 识别对象 | 优点 | 工具推荐 |
---|---|---|---|
HTTP 头分析 | 所有 | 简单快速 | curl, httpx |
端口服务识别 | 所有 | 精确 | nmap, masscan |
在线平台 | 公开资产 | 方便大量扫描 | FOFA, Hunter |
错误页面 | Tomcat/IIS | 高成功率 | curl + 路径访问 |
指纹工具 | 综合识别 | 自动化强 | whatweb, wappalyzer |