Nemesis-Tools/Nemesis-Python

GitHub: Nemesis-Tools/Nemesis-Python

基于 Selenium 的 Web 漏洞扫描器,结合真实浏览器验证与 HTTP 检测,覆盖 329 种技术并自动生成 HackerOne 格式报告。

Stars: 1 | Forks: 0

# Nemesis

한국어 · English · 中文 · 日本語

基于 Selenium 的 Web 漏洞检测工具 · HTTP/HTTPS · 329种 技术 · HackerOne 格式报告(自动生成 CWE/CVSS)

## 背景 Web 漏洞检测通常需要组合使用多种工具,并且只有真实浏览器中才能复现的缺陷 (DOM XSS、postMessage、CSP 弱点等)很容易仅靠 HTTP 扫描器遗漏。此外,将发现的 漏洞整理成可提交的报告需要花费大量时间。 **Nemesis** 将真实浏览器(Selenium)自动化与 HTTP/HTTPS 检测结合在一起,只需输入 URL 并 选择攻击技术,即可检测 **329种** 漏洞,并在基于发现的漏洞执行额外攻击(链)之后, 生成 **HackerOne 格式报告(自动映射 CWE/CVSS)**。它被打包为带有自身图标的 **独立桌面应用程序**。 ## 目的 - **广泛的覆盖率** — Injection、Client-Side、Auth/Access、Config、Exposures、Exposed Panels、 Misconfiguration、Tech/CVE、Recon 等 12 个类别,共 329 种技术。 - **真实浏览器验证** — 使用 Selenium 实际执行渲染、DOM 和事件以减少误报,并实时 流式传输扫描画面。 - **链式攻击** — 关联已确认的漏洞(例如:SSRF→元数据,XSS→会话劫持,.git→源码恢复)。 - **可直接提交的产出物** — 自动映射 CWE/CVSS v3.1/OWASP/CAPEC,生成包含 PoC (curl)、Raw HTTP、 复现步骤、影响和缓解措施的 HackerOne 格式 Markdown。 - **安全的默认配置** — 非破坏性 payload,请求间隔限制(非 DoS)。对于 Blind 系列,如果配置了 Canary 则通过 OOB 确认,否则进行 In-band 检测(详情请参阅[责任](#책임))。 ## 责任 - 禁止扫描范围外的目标,请求间隔必须足够。 - 所有 payload 均**用于非破坏性检测**,并应用了请求间隔限制(非 DoS)和安全默认配置。 - **凭证测试(暴力破解/撞库/密码喷洒)** 仅限在已授权的目标上使用 — 已应用节奏控制和尝试 次数限制,并且在**检测到锁定/速率限制信号时立即终止**(防止真实账号被锁定)。 默认禁用(opt-in),必须明确选择才会执行。 - 检查发现项的置信度(`Confirmed`/`Firm`/`Tentative`)并进行手动验证。 - 请勿夸大报告标题/严重程度(应基于事实和证据)。个人账户泄露(暴露的 ID/PW)不属于检测目标。 ### 授权下的扩展执行(高级) - **Blind 系列(SSRF、Log4Shell、XXE、Blind XSS、RFI)** — 即使未设置 Canary 也会**立即执行**。 如果配置了 Canary,则通过 OOB 回调进行确认;如果没有,则通过**In-band 检测**(SSRF=云元数据反射, RFI=include 错误,XXE=本地文件暴露,Blind XSS=存储/反射标记)报告候选漏洞。 - **凭证测试** — `credential_testing` 模块(暴力破解/撞库/密码喷洒)。需主动启用、包含节奏控制及锁定检测。 - **Race Condition/TOCTOU · 供应链 · XS-Leaks · mXSS · 容器/K8s 逃逸** — 通过专用检测模块 浮现候选漏洞(非破坏性)。实际利用(如并发请求等)请由研究员在范围内进行验证。 ### 目前仍未自动化的内容 - **DoS/DDoS/Slowloris/ReDoS/Billion Laughs** — 因涉及服务瘫痪和滥用,故未实现。 ## 运行方法 ### 安装 ``` python -m pip install -r requirements.txt ``` - Python 3.10+(开发/验证环境:3.13) - 扫描需要安装 **Chrome/Chromium**(驱动程序由 Selenium Manager 自动 provisioning)。 - 独立应用程序需要 **WebView2 运行时**(Windows 10/11 默认内置)。 ### ① 独立桌面应用程序(推荐) ``` python app.py ``` - UI 将显示在带有自身图标的**独立窗口**(WebView2)中。无需浏览器或控制台。 - 发行版:`dist\Nemesis.exe`(双击运行) ### ② Web 版本 ``` python web.py ``` - 默认浏览器中将打开 `http://127.0.0.1:8733` 的 UI。 - 发行版:`dist\NemesisWeb.exe` ### ③ 桌面(PyQt)版本(旧版) ``` python main.py ``` ### 构建 (.exe) ``` # 独立桌面应用程序 → dist\Nemesis.exe(Logo Icon, Window) pyinstaller bugbounty_app.spec --noconfirm # Web 版本 → dist\NemesisWeb.exe powershell -ExecutionPolicy Bypass -File build_web_exe.ps1 ``` - 图标:`logo.png` → `logo.ico`(内嵌于构建中,用作 favicon 和窗口图标)。 - 添加模块后,在重新构建之前,请通过 `python tools/gen_manifest.py` 更新清单(构建脚本会自动执行)。 - 由于是未签名的 exe,首次运行时可能会出现 SmartScreen 警告(可通过代码签名消除)。 ## Attack Viewer(交互式查看器) - **Start** 按钮不会立即开始扫描,而是将输入的 URL 在 **Attack Viewer** 中打开。 您可以**直接点击、输入、滚动**查看器画面(实时传递给服务器端的 Chrome),并通过查看器顶部的 **地址栏**进行导航、后退、前进和刷新。 - **扫描不会自动开始。** 在调整到所需的页面状态后,必须在终端输入 **`/start`** (或攻击编号)才会运行。执行后,查看器将切换到扫描实时画面,地址栏将显示当前扫描目标的 URL。 ## 终端命令 在底部的 TERMINAL 中输入 `/` 将弹出命令提示框。 | 命令 | 说明 | |---|---| | `/start [url]` | **开始扫描** — 使用选定的技术运行(在查看器中准备就绪后通过此命令执行) | | `/attack [关键词]` | 列出攻击技术及其编号 → **输入编号可单独执行该攻击** | | `/login` | 交互式自动登录设置(URL → 账号 → 密码) | | `/status` | 检查当前扫描状态 | | `/stop` | 停止正在进行的扫描 | | `/clearlogin` | 删除保存的登录信息 | | `/clear` | 清除屏幕(日志) | 示例:`/attack sqli` → 输入 `1` → 在目标 URL 上实际执行相应的 SQLi 模块。 ## Nemesis ML Model 这是一个两阶段(检测→审查)流水线,主要以检测正确性重新校准结果并减少误报。 - **特征(41个)**:17个工程化特征(自置信度、模块精度、证据强度、状态码、Token、活跃实证、严重程度等) + **24个字符 3-gram 哈希桶**(确定性 FNV-1a,URL/HTML 解码与规范化预处理) — 对 payload/signature 文本(例如:`root:x:0:0`、`ORA-01756`、DB 错误信息)不是通过硬编码,而是作为**数据进行学习**。 - **分类器**:MLP `41 → 20 → 1`(tanh 隐藏层 + sigmoid 输出层),通过**纯 Python 反向传播**进行训练和推理 (零外部依赖,如 numpy/torch)。权重:`models/vuln_model.json`。 - **训练数据**:基于**268个模板技术各自的真实检测 signature** + 通过代码模块整理自动生成正/误报 示例(包含字符特征增强)。重新训练:`python tools/train_model.py`。 - **集成审查**:混合规则得分 ⊕ ML `P(正报)` → **严格的交叉验证门槛**(如果没有次级独立信号, 则视为误报并移除,Critical 级别则保留供审查)。普遍适用于所有发现项(共 329 种技术)。 - **反馈学习**:通过报告中的 👍正报/👎误报 → `models/feedback.jsonl` → 在重新训练时对实际标签进行 加权反映(越使用越强化)。如果缺少模型,则自动回退到基于规则的判断。 ## 许可证 本项目采用 **MIT License** 发布。详情请参阅 [LICENSE](LICENSE) 文件。 ``` MIT License Copyright (c) 2026 Nemesis Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ```
标签:CISA项目, Selenium自动化, Web漏洞扫描, 漏洞报告生成, 漏洞挖掘, 逆向工具