tX-c0re/xss-grenade
GitHub: tX-c0re/xss-grenade
一款现代化的 XSS 漏洞检测引擎,通过真实浏览器验证确认可利用漏洞并生成可视化报告。
Stars: 0 | Forks: 0
```
▒██ ██▒ ██████ ██████ ▄████ ██▀███ ▓█████ ███▄ █ ▄▄▄ ▓█████▄ ▓█████
▒▒ █ █ ▒░▒██ ▒ ▒██ ▒ ██▒ ▀█▒▓██ ▒ ██▒▓█ ▀ ██ ▀█ █ ▒████▄ ▒██▀ ██▌▓█ ▀
░░ █ ░░ ▓██▄ ░ ▓██▄ ▒██░▄▄▄░▓██ ░▄█ ▒▒███ ▓██ ▀█ ██▒▒██ ▀█▄ ░██ █▌▒███
░ █ █ ▒ ▒ ██▒ ▒ ██▒ ░▓█ ██▓▒██▀▀█▄ ▒▓█ ▄ ▓██▒ ▐▌██▒░██▄▄▄▄██ ░▓█▄ ▌▒▓█ ▄
▒██▒ ▒██▒▒██████▒▒▒██████▒▒ ░▒▓███▀▒░██▓ ▒██▒░▒████▒▒██░ ▓██░ ▓█ ▓██▒░▒████▓ ░▒████▒
▒▒ ░ ░▓ ░▒ ▒▓▒ ▒ ░▒ ▒▓▒ ▒ ░ ░▒ ▒ ░ ▒▓ ░▒▓░░░ ▒░ ░░ ▒░ ▒ ▒ ▒▒ ▓▒█░ ▒▒▓ ▒ ░░ ▒░ ░
░░ ░▒ ░░ ░▒ ░ ░░ ░▒ ░ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░░ ░░ ░ ▒░ ▒ ▒▒ ░ ░ ▒ ▒ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░
B r o w s e r - v e r i f i e d X S S · T X - C 0 R E
```





它作为 PyQt5 桌面应用运行 —— 实时攻击面图谱、实时发现结果、浏览器验证以及一键报告,全部通过 GUI 完成。

## ▸ 为什么它更具杀伤力
- **`[+]` 上下文感知 payload** — 检测参数在*何处*发生反射(HTML / 属性 / URL / JS / 样式 / 注释),并仅触发适合该上下文的 payload,包括针对同一参数的多种反射上下文。
- **`[+]` 真实浏览器验证** — 在无头 Chromium(Playwright)中确认候选项,因此报告包含的是**可利用**的问题,而不是一堆猜测。
- **`[+]` 静态 JS 污染分析** — 将 JavaScript 解析为 AST,并追踪不受信任的源(`location.*`、`document.referrer`、`window.name`、`postMessage` 等)进入危险的 sink(`innerHTML`、`eval`、`document.write`、框架 sink)。
- **`[+]` 现代类型** — DOM XSS、突变 XSS (mXSS)、原型污染 → gadget 链、DOM 劫持 (clobbering)、Trusted Types 配置错误、SSR hydration、CSP 绕过分析。
- **`[+]` 漏洞赏金向量** — 带有弱 `origin` 检查的 `postMessage` 处理程序、JSONP callback 注入、悬空标记(无脚本、抗 CSP)、SVG/XML content-type 反射。
- **`[+]` 已知 CVE 库检测** — 对前端库/框架(React、Vue、Angular、Next.js、jQuery、lodash、DOMPurify 等)进行指纹识别,并标记具有已知 XSS/RCE CVE 的版本。
- **`[+]` 弹性长时间扫描** — 原子化、带指纹的检查点可恢复中断的扫描,而无需从头开始。
- **`[+]` 报告** — 一键**保存** → 机器可读的 JSON、独立的面向客户的 HTML 报告,以及 PoC 压缩包。
## ▸ 环境要求
- **Python 3.8+**
- 必需:`PyQt5`(GUI)、`requests`、`beautifulsoup4`、`alive-progress`
- 强烈推荐:`esprima`(静态 JS 分析)、`playwright` + Chromium(无头验证)
- 可选:`curl_cffi`(TLS 指纹规避)
推荐/可选依赖可平滑降级 —— 如果缺少其中一项,则会禁用该检测功能,其余部分继续工作。`pip install -r requirements.txt` 会安装所有内容。
## ▸ 安装
```
# clone
git clone https://github.com/tX-c0re/xss-grenade.git
cd xss-grenade
# (推荐) virtual environment
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# dependencies
pip install -r requirements.txt
# (推荐)用于 headless 验证的 Chromium
python -m playwright install chromium
```
## ▸ 运行
```
python xss_grenade_gui.py
```
```
[1] enter a TARGET URL you are authorized to test
[2] pick your detection modules in the SETTINGS tab (reflected XSS + crawl are on by default)
[3] hit RUN → live attack-surface graph + real-time, browser-verified findings
[4] hit SAVE → JSON + HTML report + a self-contained PoC bundle
```
发现结果均在真实浏览器中得到确认 —— 因此最终进入 RESULTS 的都是可利用的漏洞,而非无用噪音。
## ▸ 检测模块
反射/上下文感知的 XSS 和爬取默认运行;其他所有功能均可在 **SETTINGS** 标签页中按需切换,因此您只需为所需的功能付出开销。
| 领域 | 阶段 / 开关 | 功能说明 |
|------|--------------|--------------|
| 爬取 | `crawl`(默认) | 从 JS bundle 中发现 URL、query 参数、表单、JSON 主体和 REST/SPA endpoint。 |
| 反射型 XSS | `context`(默认) | 针对每个反射点的上下文感知 payload(HTML/属性/URL/JS/样式),包括多重上下文。 |
| 快速扫描 | `smart payloads` | 精选的高信号 payload 集 —— 在保持广泛覆盖面的同时大幅提升大型目标的扫描速度。 |
| 模糊测试 | `--fuzz` | 当上下文感知测试不足时,执行感知 WAF 的 payload 变异。 |
| 存储型 XSS | `--stored`、`--stored-roundtrip` | 检测持久化/往返的存储型 XSS。 |
| DOM XSS | `--dom`、`--dom-v` | 运行时 + 静态 source→sink 污染分析。 |
| 静态 JS | `--static-js` | 对 JavaScript bundle 和内联脚本进行 AST 污染分析。 |
| postMessage | `--postmessage` | 标记将 `event.data` 传递给 sink 且缺少/具有较弱 `origin` 验证的 `message` 处理程序。 |
| 突变型 XSS | (自动) | Sanitizer 绕过 / 重新解析 (mXSS) 分析;在模块可用时运行。 |
| 原型污染 | `--proto-pollution` | 客户端 PP 源 → 已知库 gadget 链 → XSS。 |
| DOM 劫持 | `--dom-clobbering` | 劫持脚本行为的命名元素覆盖。 |
| Trusted Types | `--trusted-types` | 不安全的 CSP Trusted Types 配置 + 不安全的 `createPolicy()`。 |
| SSR hydration | `--ssr-hydration` | 服务端渲染 / hydration XSS 问题。 |
| CSP 绕过 | `--csp-bypass` | JSONP 白名单绕过、`unsafe-inline`/`eval`、缺少 `base-uri`、nonce 重用、通配符主机。 |
| 库 CVE | (使用 `--static-js`) | 对库/框架进行指纹识别,并标记具有已知 CVE 的版本。 |
| 开放重定向 → XSS | `--open-redirect` | `javascript:` 重定向链。 |
| JSONP 注入 | `--jsonp-scan` | `?callback=` 在 JS content-type 响应中被反射为函数调用。 |
| 悬空标记 | `--dangling-scan` | 未闭合标签的标记吞噬(无脚本,甚至在 CSP 下也能工作)。 |
| SVG / XML XSS | `--svg-scan` | 反射到 `image/svg+xml` / `application/xml` 中,在直接访问时执行。 |
| WebSocket | `--websocket` | WebSocket 消息注入 XSS。 |
| Headers / CORS | `--headers`、CORS/CRLF/XSSI | Header 反射的 XSS、CORS 配置错误、CRLF、XSSI。 |
上述每个模块都是 GUI **SETTINGS** 标签页中的一个复选框,并在 **HELP** 标签页中提供了通俗易懂的解释。
## ▸ 报告
一键**保存**可随时将报告压缩包写入您选择的文件夹 —— 即使在扫描过程中或停止后也是如此,因此发现结果绝不会丢失:
- **JSON** — `findings`(已确认、已去重)、包含严重性细分的 `summary` 块,以及按类别划分的结构化发现结果。非常适合对接工具。
- **HTML** — 单个独立文件(内联 CSS,无外部资源):严重性摘要、按严重程度(关键优先)分组的发现结果、针对具体上下文的修复建议,以及易受攻击的库表格。所有值均经过 HTML 转义,因此即使报告包含活动的 payload,也能安全打开。
- **PoC 压缩包** — 针对每个已确认发现结果的独立、非活跃概念验证页面。
## ▸ 安全机制
- **破坏性模式** 受到明确确认的限制,且默认关闭。仅在可能触发状态更改操作的场景下使用。
- 基于同样的原因,**SSRF 扫描**也需手动开启。
- 在报告任何内容之前,会运行统一的去重 + 验证瓶颈控制,因此跨越多个 URL 的同一问题会折叠为单个发现结果。
## ▸ 项目布局
```
xss_grenade.py # Core scan engine (pipeline, phases, reporting)
xss_grenade_gui.py # PyQt5 graphical interface
context_engine.py # Reflection-context classification
_static_js_analyzer.py # JavaScript AST taint analysis
_dom_v6.py # DOM XSS (runtime hooks + static)
_mutation_xss.py # Mutation XSS payloads/analysis
_proto_pollution_analyzer.py # Prototype pollution → gadget chains
_dom_clobbering.py # DOM clobbering
_trusted_types_analyzer.py # Trusted Types / CSP audit
_template_injection.py # Client-side template injection (framework-aware)
_library_cve_feed.py # Library/framework fingerprinting + CVE matching
_dompurify_cve_feed.py # DOMPurify version → CVE feed
_open_redirect.py # Open-redirect → XSS
_headless_verifier.py # Playwright headless verification
_checkpoint.py # Resume/checkpoint
_html_report.py # HTML report generation
bench_firingrange/ # Google Firing Range benchmark harness (Apache-2.0)
```
## ▸ 许可证
基于 **GNU General Public License v3.0** 的自由软件 —— 详见 [LICENSE](LICENSE)。
使用它、研究它、分享它、修改它。如果您分发修改后的版本,您也必须在 GPLv3 下发布您的更改 —— 从而确保该工具对所有人保持自由和开放。
```
XSS Grenade — a modern XSS detection engine for authorized security testing.
Copyright (C) 2026 TX-C0RE Security Research
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
```
`bench_firingrange/templates/` 下的打包 Firing Range 语料库源自 Google 的 Firing Range(Apache License 2.0 —— 详见 `bench_firingrange/LICENSE.firing-range`),它与 GPLv3 兼容。
## ▸ 免责声明
XSS Grenade 仅用于合法、授权的安全测试和教育。作者不对滥用或本软件造成的任何损害承担责任。在测试您不拥有的任何系统之前,请务必获得明确的许可。
标签:Python, XSS检测, 安全测试, 攻击性安全, 无后门, 特征检测, 自动化验证, 逆向工具