obaskly/Venator

GitHub: obaskly/Venator

Venator 是一款将侦察、漏洞利用与确认压缩为单次运行的模块化授权安全测试 CLI 工具,通过有效 PoC 验证漏洞并生成可直接用于报告的审计日志。

Stars: 0 | Forks: 0

# Venator 一款用于授权侦察和**自动化漏洞利用**的 **模块化 CLI 工具**,旨在将 侦察 → 分流 → 利用 → 确认 压缩为一次带有完整审计日志的运行过程。它不仅能够发现漏洞,还能通过有效的 PoC 进行确认,仅捕获最小限度的证明而不是转储数据,因此其输出可直接用于报告。对于无法自动确认的项,它会将其作为线索汇报,并准确指出还需要检查的内容。
🔓 漏洞利用与链式攻击
Venator 通过展示实际影响来**确认**漏洞,然后将它们**串联**成可提交、高赏金的攻击路径: - **漏洞利用阶段** — 自动检测 HTML 表单和 JSON API(无需逐站配置):SQLi/NoSQLi 认证绕过、批量赋值权限提升、反射型 XSS 执行、OS 命令注入(`id` 输出)、LFI/路径遍历(只读,硬特征确认)、感知 WAF 的重试(注释分割、base64 包装、关键字大小写混淆)、JWT 漏洞(alg:none、弱密钥破解)、IDOR 探测、敏感数据暴露(Luhn 信用卡、私有密钥)。每个发现都会被标记为 `EXPLOITED`,并附带可复制粘贴的 `curl` PoC。 - **文件上传 → RCE / 存储型 XSS** — 自动检测多部分(multipart)上传表单及 endpoint,运行绕过矩阵(扩展名技巧 `.php`/`.phtml`/`.phar`/双扩展名/末尾加点/大小写/空字节、内容类型欺骗、`GIF89a` 魔术字节前缀、SVG/HTML),然后**通过回读文件进行确认**:执行算术标记(原始 `
🧠 为何与众不同
大多数侦察脚本只会转储一个扁平的列表。Venator 添加了真正能赢得赏金的关键部分: - **JS 情报** — 从 JS bundle 中挖掘隐藏的 API 路由和泄漏的机密(AWS、Google、Stripe、GitHub、Slack、JWT、私有密钥…)。 - **Wayback / CDX 挖掘** — 无需 key 的历史 URL 发现;标记被遗忘的 endpoint(`.env`、`.sql`、`/admin`、`?id=`)。 - **云存储桶枚举** — 从目标(`acme-prod`、`acme-backups`、`acme-assets`…)派生候选的存储桶/账户名称,并探测 **S3 / GCS / Azure Blob** 的公开列表(已确认)或存在但私有的存储桶(侦察线索)。凭据隔离:仅限与白名单内的云主机建立全新连接,只读列表,绝不涉及目标的会话。 - **子域接管** — 针对 17 个服务指纹(S3、GitHub Pages、Heroku、Fastly、Netlify…)进行悬空 CNAME 检测。 - **子域排列** — altdns 风格的变异引擎从已知的子域派生新候选(层级/服务前缀 + 数字增量),对其进行解析,并对结果进行通配符过滤。 - **深度 DNS** — 尝试针对每个权威名称服务器进行 AXFR 区域传送(这种单一错误配置会转储整个区域)并枚举常见的 SRV 服务记录;它披露的任何主机都会直接折回到探测/漏洞攻击面中。 - **失效链接劫持** — 提取范围内页面引用的外部资产,并标记任何可注册域处于**未注册**状态的资产(NXDOMAIN → 可被认领用于存储型 XSS / 钓鱼 / 供应链攻击)。仅限 DNS:它绝不向范围外发送 HTTP,也绝不进行任何注册。 - **参数攻击面映射 (gf-style)** — 根据历史上与其相关的 bug 类别(SQLi/SSRF/LFI/redirect/SSTI/IDOR/XSS)对每个发现的 URL 参数进行分类,突显有趣的文件(`.env`/`.bak`/`.git`/`openapi.json`…),并**提升**位于高价值参数上的发现的**搜索排名**。不发出任何请求——纯对现有表面进行分类。 - **GraphQL 内省** — 定位 GraphQL endpoint 并检查 schema 是否暴露。 - **CVE → 漏洞利用情报** — 使用 nuclei 元数据(CVSS、PoC 链接)和可选的 `searchsploit` ExploitDB 匹配项来丰富检测到的 CVE。 - **验证阶段** — 重新确认发现,检测 soft-404(排名第一的误报源),并进行去重。 - **感知 Catch-all / SPA** — 丢弃 soft-404 伪影,折叠缓存破坏 URL 爆炸,排除传输 endpoint。触及空值参数和 SPA 仅在用户操作时调用的无 endpoint。 - **赏金优先级排序** — 每个发现都会被打分(严重性 + 可利用性 + 资产价值 + 确信度);报告包含带有排名的“优先搜索这些”列表的线索。 - **主动探测(线索生成)** — 403/401 绕过矩阵、开放重定向以及基于错误/特征的注入线索,每项都由随后的漏洞利用阶段自动确认。 - **现代 CVE/技术检查** — Next.js middleware/App-Router 认证绕过(CVE-2025-29927 `x-middleware-subrequest`、**CVE-2026-44575/44574** `.rsc`/segment-prefetch + `_rsc` 查询路由混淆,以及 **2026 年 5 月的 proxy/middleware authz 批次** — i18n 默认区域前缀 + path-matcher 混淆,每一项均通过未认证状态下提供受保护内容进行确认),Web 缓存中毒 + host header 注入、电子邮件欺骗态势(SPF/DMARC)。React Server Components 反序列化 RCE(CVE-2025-55182,CVSS 10)+ RSC DoS 链由全库 nuclei 阶段和 CVE 情报阶段覆盖(基于版本绑定,进行主动确认不安全)。 - **CORS 深度** — 超越任意 origin/`null` 反射:子域信任反射和前缀匹配(`trusted.com.attacker.com`)绕过,每一项都带有唯一的攻击者金丝雀值和感知凭据的严重性。 - **感知通配符 DNS 枚举** — 检测通配符记录并丢弃幽灵子域。 - **Favicon mmh3 哈希** — Shodan/FOFA 枢纽,用于发现任何 DNS 暴力破解都无法浮出的兄弟主机。 - **随机 User-Agent 轮换** — 每次请求轮换逼真的浏览器 UA。
🛡️ 安全模型
由代码强制执行,而非依靠约定: - **范围防护** — 仅与目标顶级域、其子域和 `--extra-scope` 主机进行联系。范围外 URL 会引发 `ScopeError`,被记录为 `BLOCKED_OUT_OF_SCOPE` 并被丢弃。 - **全局速率限制器** — 一个线程安全的限制器将所有出站请求按 `--delay`(或 `1/--rate-limit`)间隔开。更多的线程 ≠ 更多的请求/秒。 - **自适应退避** — 当目标响应 `429`/`503`(遵守 `Retry-After`)时,间隔会自动拉长,并在连续正常响应后逐渐缓解。它只会*放慢速度*——绝不会低于您配置的下限——因此它不会使扫描变得比您要求的更张扬。使用 `--no-adaptive-rate` 禁用。 - **审计日志** — 每个请求(方法、URL、时间戳、阶段、状态、工具)都会被附加到 `output//audit.jsonl` 中。 - **重证明轻破坏** — 使用最少的良性标记进行确认,而非破坏性操作:用于反射的良性金丝雀 token、只读的 GraphQL 内省和文件/机密读取、用于原型链污染的垃圾(非安全)属性名称。仅在 bug 类别需要时才使用 POST(认证绕过、批量赋值、原型链污染、竞态条件),并且竞态探测只发送一个小的有界并发突发——没有 fuzzing,没有凭据暴力破解,没有 DoS 式的量。 - **降级运行检测** — 如果每个活动主机在 HTTP 探测中均失败,报告将被标记为 `DEGRADED RUN`,而不是无声无息地显示为“无风险”。
⚙️ 设置
``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` **要求:** Python 3.10+。纯 Python 的后备方案意味着它在没有任何外部二进制文件的情况下也能运行。 **可选二进制文件**(如果在 `PATH` 中,可提高速度/深度):`subfinder`、`httpx`、`nuclei`、`nmap`、`masscan`、`openssl`、`dig`、`katana`、`searchsploit`。无需 API key。 **无头浏览器(可选):** `pip install playwright` + Chromium — 激活 SPA 渲染 + DOM-XSS 阶段;如果未安装则自动跳过。使用 `--no-browser` 禁用。 **nuclei** 运行**全量模板库**(每个 tag + 严重性),并开启 interactsh OOB 协作器,以便盲bug通过回调进行自我确认。默认情况下仅排除 `dos` 模板(它们会损害目标而不是证明 bug)——添加 `--nuclei-dos` 以包含它们。
🚀 用法
``` python3 venator.py [options] ``` 启动时,它会打印法律横幅并要求您**输入顶级域**以确认授权。在您控制的自动化中,可以使用 `--yes` 跳过。 **快速示例:** ``` # 完整扫描 (1 req/sec) python3 venator.py example.com # 更快速,自定义输出目录 python3 venator.py example.com --yes --delay 0.3 -o output/example # 快速分流 (跳过慢速阶段) python3 venator.py example.com --yes --no-subdomains --no-ports --no-nuclei # 仅深度侦察 (无 vuln 阶段) python3 venator.py example.com --no-vuln # 关注 JS-secret python3 venator.py example.com --js-max-files 60 --no-dir-brute # 使用 nuclei 进行完整深度运行 python3 venator.py example.com --yes --delay 0.2 --nuclei-rate 40 --nuclei-timeout 600 --max-hosts 40 ```
🚩 参数参考
**礼貌 / 安全** | 参数 | 默认值 | 含义 | |------|---------|---------| | `--delay ` | `1.0` | 每个请求之间的间隔秒数(全局)。 | | `--rate-limit ` | — | 最大 req/sec(与此项和 `--delay` 中更严格的一项为准)。 | | `--timeout ` | `10.0` | 每个请求的超时时间。 | | `--threads ` | `5` | 每阶段 HTTP 并发上限。 | | `--workers ` | `0` (auto) | 并行阶段 worker;`0` 自动缩放至 CPU 核心数。 | | `--verify-tls` | off | 验证 TLS 证书。 | | `--no-rotate-ua` | off | 禁用随机 User-Agent 轮换。 | | `-y, --yes` | off | 跳过授权确认提示。 | | `--extra-scope ` | — | 您拥有的额外范围内主机(逗号分隔)。 | | `-q, --quiet` | off | 仅显示摘要——最适合大量子域。 | | `-v, --verbose` | off | 每个请求的详细信息 + 被阻止的范围外主机。 | **认证扫描** | 参数 | 默认值 | 含义 | |------|---------|---------| | `--cookie ""` | — | 会话 cookie,例如 `"session=abc; csrf=xyz"`。 | | `--auth-bearer ` | — | 向每个请求添加 `Authorization: Bearer `。 | | `--header "K: V"` | — | 向每个请求添加额外 header(可重复)。 | **带外 (OOB)** | 参数 | 默认值 | 含义 | |------|---------|---------| | `--no-oob` | off | 禁用 OOB 协作器(关闭盲 SSRF/RCE/XXE/XSS)。 | | `--oob-provider

` | `auto` | `auto` (interactsh→ngrok)、`interactsh` 或 `ngrok`。 | | `--ngrok-domain ` | — | 用于 OOB 备用的保留 ngrok 域。 | **阶段开关** `--no-subdomains` `--no-dns` `--no-ports` `--no-probe` `--no-fingerprint` `--no-endpoints` `--no-vuln` `--no-nuclei` `--no-external` `--no-dir-brute` `--no-jsintel` `--no-wayback` `--no-takeover` `--no-graphql` `--no-validate` `--no-cve-intel` `--no-active` `--no-exploit` `--no-chain` `--no-apispec` `--no-parammine` `--no-sourcemap` `--no-blindxss` `--no-subperms` `--no-urlclass` `--no-brokenlinks` `--no-adaptive-rate` `--no-fileupload` `--no-llminject` `--no-cspt` `--no-cloudassets` **调节旋钮** | 参数 | 默认值 | 含义 | |------|---------|---------| | `--ports ` | 常用集 | 要扫描的逗号分隔端口。 | | `--dns-wordlist ` | 内置 | 子域暴力破解字典。 | | `--dir-wordlist ` | 内置 | 目录暴力破解字典。 | | `--max-hosts ` | `25` | 限制端口 + 漏洞扫描的主机数量。 | | `--nuclei-rate ` | 派生 | nuclei req/sec。 | | `--nuclei-timeout ` | `900` | nuclei 阶段的最大秒数。 | | `--js-max-files ` | `25` | 要获取和分析的最大 JS 文件数。 | | `--wayback-limit ` | `5000` | 要请求的最大 Wayback/CDX 行数。 |

⚡ 性能与流水线
扫描会自动检测 CPU 核心数并并发运行独立的阶段:在开始时进行子域枚举 ∥ DNS ∥ Wayback;nmap 端口扫描 ∥ HTTP 探测;nuclei 与 Python 漏洞检查重叠。使用 `--workers` 进行调整(`0` = 自动)。 **阶段顺序:** ``` subdomains (+ altdns permutations) → dns (+ AXFR / SRV) → ports → probe → fingerprint → endpoints → JS intel → recursive crawl (+katana) → headless browser (SPA + DOM-XSS + CSPT) → wayback → takeover → broken-link hijack → cloud-bucket enum → favicon hash → vuln (headers, tls, cors [deep], reflection, misconfig, graphql, CVE, email, exposure: .git / actuator / .env, nuclei) → active probing (403/401 bypass, open-redirect, CRLF, injection leads, OAuth, Next.js CVE-2025-29927 + CVE-2026-44575 RSC + 2026 proxy-authz bypass, cache poisoning) → exploitation (SQLi auth-bypass, XSS, command injection, file-upload→RCE, LLM prompt injection — PoC) → chaining → CVE intel → validation → parameter attack-surface map → bounty prioritization → report ```
📁 输出
``` output// ├── audit.jsonl # every request: method, url, timestamp, status, phase, tool └── report.json # full machine-readable results reports// ├── scan_report.md # clean text for piping into an LLM └── scan_report.html # self-contained dark dashboard for humans ``` 两份报告均以运行警告、排名的搜索列表和发现(优先级得分 + 验证状态)开始。`.html` 仪表板包含严重性条形图、可过滤的发现卡片、侦察表格和 favicon Shodan 枢纽——没有外部资产,只需在浏览器中打开即可。
⚖️ 负责任的使用
- 仅扫描您**拥有**或获得**明确书面授权**进行测试的资产。请始终保持在项目范围内。 - 保留 `audit.jsonl` ——这是您关于做了什么、何时做以及针对什么目标所做的证据。 - `confirmed`/EXPLOITED 发现会自动验证并带有 PoC;线索会清楚标明还需要检查什么。始终遵守项目的披露规则。对于子域接管,请**不要**认领该资源——记录并报告它。 - 泄漏的机密匹配项在验证之前仅被视为“可能”。**切勿使用**发现的凭据;应报告它以进行轮换。 - **主动阶段生成线索,而非漏洞利用**。切勿在实时数据上升级到 `UNION`/`OR 1=1`/基于时间/RCE 的 payload。在项目规则要求仅进行被动测试时,使用 `--no-active` 禁用。 - 未经授权的扫描在您所在的司法管辖区可能是非法的。您需对自己如何使用此工具负责。
标签:CISA项目, Maven, XXE攻击, 攻击链编排, 日志审计, 漏洞验证, 特征检测, 自动化渗透测试, 自动化漏洞利用