关于 Web 安全:2. 信息收集与资产识别

发布于:2025-05-17 ⋅ 阅读:(12) ⋅ 点赞:(0)

一、子域名收集

子域名收集目的: 枚举出一个主域名下所有可能存在的子域名。比如拿到目标是 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 等识别准确度较高。

使用方式

  1. 登录 Hunter(https://hunter.qianxin.com)

  2. 输入目标域名或 IP

  3. 查看目标资产结构,包括:

    • 端口服务识别

    • 网站响应特征

    • 中间件(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 指纹 ServerX-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 dignslookup 一个域名返回多个不同 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。

  • 使用工具:subfinderksubdomainoneforall

subfinder -d target.com

然后:

dig sub1.target.com +short

子域名如 api.target.comdev.target.comtest.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. 典型实战案例流程

  1. subfinder 收集子域名

  2. dig / dnsx 判断是否接入 CDN

  3. 用 FOFA 查询该域名历史 IP、旁站、title 搜索

  4. 用 curl 发包,验证是否是源站 IP

  5. 记录真实 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.comapi.target.comtest.target.comvpn.target.com 常未接 CDN。

  • 一旦解析出 IP,继续用 curl 加 host 测试页面内容。

方法二:历史 IP 地址泄露(中命中)

工具平台:

步骤:

  • 查询域名历史解析记录或历史证书绑定 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

返回邮件服务器的域名,再 digping 看 IP。

方法六:网页 header 泄露真实 IP(常见)

一些响应头可能包含 X-Real-IPX-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/.envconfig.php
接口暴露 /api//v1//internal/
第三方服务路径 /phpmyadmin//jenkins/

这些路径若未做权限限制,直接访问就是重大风险。

2. 核心原理(怎么做的)

目录扫描是“字典暴力+请求响应判断”的过程:

  1. 使用工具从字典中读取可能存在的路径。

  2. 拼接成完整 URL(如 https://example.com/admin/)。

  3. 向服务器发送 HTTP 请求。

  4. 判断响应状态码(200、403、401 等)和返回内容长度。

  5. 记录可能有效的路径。

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