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 ``` ![License: GPLv3](https://img.shields.io/badge/License-GPLv3-c0392b?style=flat-square) ![Python 3.8+](https://img.shields.io/badge/Python-3.8%2B-1f6feb?style=flat-square&logo=python&logoColor=white) ![GUI: PyQt5](https://img.shields.io/badge/GUI-PyQt5-2ecc71?style=flat-square) ![Platform](https://img.shields.io/badge/Platform-Windows%20%C2%B7%20Linux%20%C2%B7%20macOS-4b5563?style=flat-square) ![Status: active](https://img.shields.io/badge/status-active-16a34a?style=flat-square) 它作为 PyQt5 桌面应用运行 —— 实时攻击面图谱、实时发现结果、浏览器验证以及一键报告,全部通过 GUI 完成。 ![XSS Grenade — 带有实时攻击面图谱和浏览器验证发现结果的 GUI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ab/ab39f792b6d43266bf0ae030d560564cc71069cf09a0355d82339163b728346e.jpg) ## ▸ 为什么它更具杀伤力 - **`[+]` 上下文感知 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检测, 安全测试, 攻击性安全, 无后门, 特征检测, 自动化验证, 逆向工具