ankitjha67/orthrus

GitHub: ankitjha67/orthrus

ORTHRUS 是一个涵盖侦察、扫描、利用确认到报告生成的全流程自动化渗透测试框架,通过重新验证机制显著降低漏洞误报。

Stars: 7 | Forks: 2

# Project ORTHRUS **用于授权安全测试的自动化漏洞发现与漏洞利用确认框架。** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/) [![Use](https://img.shields.io/badge/use-authorized%20testing%20only-red.svg)](#-legal--ethical-use) [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ankitjha67/orthrus/blob/main/examples/orthrus_colab.ipynb) ORTHRUS 会对目标进行爬取,识别其技术栈,运行 58 个漏洞扫描器, 然后通过专门的漏洞利用确认阶段**重新验证**那些有价值的发现—— 从而使报告能够区分“看起来存在漏洞”(推测性)与“已被成功利用”(已确认)。 它会生成包含 CVSS v3.1 + v4.0 评分以及 OWASP / CWE / PCI-DSS / NIST-CSF / MITRE ATT&CK 映射的 JSON / CSV / HTML / PDF / SARIF / Markdown 格式的报告。 ![Orthrus 终端输出:包含横幅、授权范围面板、扫描摘要、OWASP Top-10 覆盖率以及颜色标记的漏洞发现表格](https://static.pigsec.cn/wp-content/uploads/repos/cas/e1/e1a79b0a934546f8c9ba4d79da21709cf67706a2a55d9591de14e08af5c70e2a.png) 对仅限 127.0.0.1 访问的内置练习目标进行的真实扫描。可通过 [`examples/render_report_ui.py`](examples/render_report_ui.py) 从任何 JSON 报告重新生成此视图。 📊 **在真实目标上的有效性验证:** [`docs/PROOF.md`](docs/PROOF.md) 记录了 在授权范围内(DVGA GraphQL、匹配到 7 个 CISA-KEV CVE 的 Oracle WebLogic 控制台、未经认证的 Redis)的可重现实时发现, 以及包含 1019 个测试 / 通过 lint 检查的质量门禁。 🎬 **查看运行演示:** [`docs/DEMO.md`](docs/DEMO.md) — 包含真实输出的 6 歡演示指南(扫描 → 攻击图 → 修复手册 → 补丁 → 云安全态势 → 代理),可通过 [`demo.sh`](demo.sh) 使用一条命令重现。 📐 **完整系统规范:** [`docs/PRD.md`](docs/PRD.md) — 详尽的、针对已实现系统的 PRD: 涵盖每个子系统(58 个扫描器、17 个确认模块、18 个侦察模块)、数据/配置/范围/存储模型、 确认原则,以及高级扫描器与方法的开发路线图。 ## 目录 - [功能](#-features) - [工作原理](#-how-it-works) - [范围强制执行](#-scope-enforcement-the-safety-boundary) - [环境要求](#-requirements) - [安装说明](#-installation) - [在 VS Code 或 Google Colab 中运行](#-run-in-vs-code-or-google-colab) - [快速开始](#-quickstart) - [安全尝试](#-try-it-safely) - [使用指南](#-usage-guide) - [配置说明](#-configuration) - [报告生成](#-reporting) - [生产环境:PostgreSQL 与分布式扫描](#-production-postgresql--distributed-scanning) - [架构与项目结构](#-architecture--project-layout) - [扩展 ORTHRUS(插件)](#-extending-orthrus-plugins) - [开发指南](#-development) - [法律与道德使用规范](#-legal--ethical-use) - [贡献指南](#-contributing) - [开源许可](#-license) ## ✨ 功能 **侦察(18 个模块)** - 具备范围感知的 Web 爬虫,被动技术指纹识别 - 无头浏览器(动态)爬取 + SPA 客户端路由发现 — 捕获 JS 渲染的 XHR/fetch endpoint - 参数挖掘(Arjun 风格的隐藏参数发现) - JavaScript 分析(endpoint + 敏感信息提取),**source-map 恢复**(从泄露的 `.map` 文件中恢复 endpoint),内容发现 - **robots.txt / sitemap.xml** endpoint 发现(sitemap 索引 + `.gz`)以及 **`/.well-known/`** 探测(security.txt,OpenID/OAuth config → 认证 endpoint) - 子域名枚举,DNS 枚举(+ 尝试 AXFR),WAF 检测 - REST/GraphQL API 发现,Wayback Machine 历史 URL - 被动 IP 地址情报(反向 DNS / ASN / 地理位置 / 云归属)+ 同主机托管收集 - Nmap 端口扫描(可选;需要 `nmap` 二进制文件) **漏洞扫描器(58 个)** | 类别 | 扫描器 | |---|---| | 注入 | SQLi(报错 / 布尔 / 时间盲注,WAF 绕过),命令注入,SSTI,LFI,XXE,NoSQL,**LDAP**,**XPath / XQuery**,CRLF / 响应拆分,HTTP 请求走私(CL.TE/TE.CL + **CL.0 失步**),CSV / 公式注入 | | XSS | 反射型(感知 content-type),DOM 型,存储型(浏览器验证),**浏览器污点引擎**(插桩的 source→sink:URL 数据到达 eval/innerHTML/document.write = DOM XSS,location.assign/window.open = 客户端重定向) | | 访问 / 逻辑 | IDOR,**多身份授权矩阵(BOLA/BFLA,Autorize 风格的 `--identities`)**,**提权强制浏览(通过身份格访问未链接的管理路由)**,CSRF,开放重定向,竞争条件,业务逻辑(参数篡改 / HPP),Host 头注入(密码重置投毒) | | API (OWASP API Top 10) | 批量赋值 / 对象属性注入 | | 认证 / 会话 | 认证会话分析,默认凭证,JWT(alg:none,弱密钥,jku/x5u/kid 头攻击,通过已发布的 JWKS 进行 **RS->HS 算法混淆**),**OAuth/OIDC 流程配置错误(缺失 state/PKCE,隐式流程,redirect_uri 接管)**,**SAML 响应检查(未签名断言,签名包装,NameID 注释截断)** | | 服务端 | SSRF(带外 + 元数据),**OS 命令注入(输出 / 时间 / OOB 回调盲 RCE)**,反序列化,原型链污染(客户端和服务端) | | 配置 / 传输 | 安全头,**CSP 弱点分析**,**混合内容 / 不安全传输引用**,CORS,TLS 分析,暴露的文件,**目录列表 / autoindex**,缓存投毒,Web 缓存欺骗,框架调试信息暴露,无限制文件上传,子域名接管,**HTTP 配置错误(TRACE/XST,危险方法)** | | 协议 / API | GraphQL(内省,字段建议泄露,查询批处理 + 别名重载 + 循环片段 DoS,调试/堆栈跟踪泄露 — DVGA 级别),WebSocket,**gRPC server-reflection 暴露**,**影子 / 不当清单 API (API9)** | | 敏感信息 | **暴露敏感信息扫描器** — AWS/Google/Slack/Stripe/GitHub 密钥 + 响应/JS 中的私钥块(已脱敏) | | 供应链 | SCA — 已知存在漏洞的 JS 库(retire.js 风格) | | 模板 | 声明式 Nuclei 风格 YAML/JSON 模板引擎(`--templates`) | | 情报 | CVE 匹配器(版本 → 已知 CVE)**外加**无版本产品指纹识别(WebLogic, Confluence, Jenkins, Solr → 已知被利用的 CVE),全部通过 CISA KEV + EPSS 丰富数据(`orthrus update`) | | AI / LLM | Prompt 注入 + 系统 prompt / 敏感信息泄露(OWASP LLM Top 10) | | 服务 / 基础设施 | 通过原生协议探测发现未经认证的服务暴露(Redis,Memcached) | 主动注入扫描器共享一个 **WAF 绕过编码器库**(URL / 双重 URL / 大小写混合 / 注释间距 / HTML 实体 / unicode);在 `--aggressive` 模式下会自动尝试 能在传输中存活的变体。 **漏洞利用确认(17 个模块)** — 重新验证发现,将其 置信度提升至 `confirmed`: - **注入** — SQLi,命令注入,SSTI,LFI,XXE,**NoSQL**(驱动程序错误重放) - **XSS** — 当存在 Playwright 时默认由浏览器执行(窗口标志/对话框 + 屏幕截图) - **重定向 / 头** — 开放重定向,**CRLF / 响应拆分**(全新 nonce 头存活),**Host 头注入**(一个全新伪造的攻击者 Host 被再次反射到链接/重定向中) - **访问 / 对象** — **IDOR**(重现了顺序对象枚举:相邻 ID 能解析,而不合理的 ID 不能解析),**批量赋值**(一个全新的逐字段 nonce 被重新绑定到响应对象中) - **跨域 / token** — **CORS**(通过一个全新生成的攻击者源重新验证任意源反射),**JWT**(恢复一个弱 HMAC 密钥并用于伪造一个有效签名的 token — 密钥永远不会被发送) - **JS 运行时 / DoS** — **服务端原型链污染**(一个全新的 `__proto__` 哨兵通过清理前/污染后的差异重新持久化到一个新对象上),**GraphQL DoS**(重新发送并重新观察查询批处理和别名重载放大) - **带外** — SSRF(collaborator 回调) 确认机制同时作用于查询字符串 **和** POST/JSON body 参数,并且是 **并发运行**的(受 `concurrency` 限制),因此 WAN 往返时间是重叠的而不是累加的。 它特意涵盖了*可主动利用*的类别。通过观察已经被明确证明的漏洞发现(缺失安全头、弃用的 TLS、 已知 CVE 的产品暴露、Banner 泄露、暴露的服务、请求走私、GraphQL 内省)在检测阶段 本身就以 `firm`/`confirmed` 状态输出。有少数类别被特意设计为**仅检测**,因为目前不存在*安全*且 通用的自动化利用方法——最明显的是**不安全的反序列化** (一种被动的序列化 blob 签名;证明 RCE 需要针对特定目标的 gadget 链)——因此 ORTHRUS 会报告它们,而不是捏造一个具有误导性的确认结果。 **报告生成** - 格式:**JSON, CSV, HTML, PDF, SARIF, Markdown, MITRE ATT&CK Navigator layer** - 模板:**高管版**,**技术版**,**合规版** - **CVSS v3.1 + v4.0** 评分;**OWASP Top 10 / CWE / PCI-DSS / NIST-CSF / MITRE ATT&CK** 映射 - 严重性过滤,Logo 品牌化,内嵌屏幕截图及原始请求/响应证据 **平台** - 异步核心(`httpx`,HTTP/2),基于 host 的 token bucket 速率限制,User-Agent 轮换 - 用于 DOM/存储型 XSS 及 JS 渲染爬取的无头浏览器引擎(Playwright/Chromium) - 用于盲 SSRF/RCE 检测的带外回调服务器(本地监听器) - 可插拔的扫描器/漏洞利用/侦察/报告模块,在启动时自动发现 - SQLite(开发环境)或 **PostgreSQL**(+ Alembic 迁移);可选通过 Celery/Redis 进行**分布式**扫描 - OpSec:AES-256-GCM 静态证据加密,操作者审计日志,HAR 导出 **平台与集成** - **REST API**(`orthrus serve`,FastAPI),在 `/docs` 提供自动 Swagger 文档,以及一个托管的 **Web 控制面板** - **MCP server**(`orthrus mcp`),将扫描/漏洞发现作为工具暴露给 AI 代理 - **外部工具编排**(`--tools nuclei`)— 运行同类最佳的 CLI 并将其输出标准化为 ORTHRUS 的漏洞发现 - **IaC 配置错误审计**(`orthrus iac`)— Dockerfile / docker-compose / Terraform,完全离线 ## 🔁 工作原理 ORTHRUS 运行一个四阶段的流水线。每一个网络请求——在每一个阶段——都会 经过强制执行范围的 HTTP 客户端。 ``` flowchart LR A[Target + Scope] --> B[Recon] B --> C[Scan] C --> D[Exploit / Confirm] D --> E[Report] B -. assets & endpoints .-> DB[(Findings DB)] C -. findings .-> DB D -. confirmations .-> DB DB --> E subgraph guard [Scope-enforced HTTP client deny-by-default] B C D end ``` 1. **Recon(侦察)** — 发现主机、endpoint、参数和技术。 2. **Scan(扫描)** — 针对发现的注入点运行选定的扫描器; 输出度为 `tentative`/`firm` 的漏洞发现。 3. **Exploit / Confirm(利用 / 确认)** — 重新发送一个受控 payload(对于 XSS,在 真实浏览器中执行;对于 SSRF,等待带外回调),以将 已证实的漏洞发现的置信度升级为 `confirmed`。 4. **Report(报告)** — 将漏洞发现(包含 CVSS、合规映射和 证据)渲染为您选择的格式。 ## 🛡️ 范围强制执行(安全边界) `orthrus.utils.scope.ScopeValidator` 是核心的安全控制组件。它是 **默认拒绝**的:只有当您的 `ScopeConfig` 明确授权时,才会连接相应的 主机 / 端口 / 路径。`orthrus.core.http_client.HttpClient` 在**每次请求之前**都会查询它,并且**重新验证每一个重定向跳转**, 同时无头浏览器也受限于相同的检查。扫描器模块必须使用 `HttpClient` 而不是原始的 `httpx`,因此该边界无法被绕过。 解析后的范围会在每次运行开始时打印出来,以便您在 任何流量离开您的机器之前确认授权边界: ``` Authorized scope - domains=['*.target.com'] ip_ranges=['10.0.0.0/24'] ports=[80, 443] exclude=['/admin/delete/.*'] ``` `--scope auto` 会从目标主机派生出一个最小范围;**真实的测试任务 应始终传递明确的 `--scope`。** ## 📋 环境要求 - **Python 3.11+**(基于 3.14 开发,Windows 11) - “精简核心”依赖项是纯 Python / wheels,在 Windows 上安装 无需任何外部二进制文件。较重的集成是可选项。 ## 📦 安装说明 ``` git clone https://github.com/ankitjha67/orthrus.git cd orthrus python -m venv .venv # Windows: .\.venv\Scripts\Activate.ps1 # Linux/macOS: source .venv/bin/activate pip install -e . ``` 可选的依赖组: ``` pip install -e ".[browser]" # Playwright headless browser (DOM/stored XSS, PDF) pip install -e ".[scanners]" # pyjwt, cryptography, sslyze, paramiko, websockets pip install -e ".[recon]" # python-nmap (needs the nmap binary too) pip install -e ".[reporting]" # weasyprint (alt PDF backend; default PDF uses [browser]) pip install -e ".[postgres]" # asyncpg + alembic pip install -e ".[distributed]" # celery + redis pip install -e ".[dev]" # pytest, ruff, mypy # 安装 [browser] 后,下载一次 Chromium 运行时: playwright install chromium ``` ## 💻 在 VS Code 或 Google Colab 中运行 想要一份引导式的、可直接复制粘贴的设置说明?这里有两份详细的分步指南,位于 **[docs/USAGE_VSCODE_COLAB.md](docs/USAGE_VSCODE_COLAB.md)**: - **VS Code** — 虚拟环境配置,推荐的扩展程序,运行内置的 练习目标,断点调试(`launch.json`),以及 测试/lint 工作流。 - **Google Colab** — 零本地安装,全部在浏览器中运行。打开 随时可运行的 notebook 并选择 **Runtime → Run all**: [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ankitjha67/orthrus/blob/main/examples/orthrus_colab.ipynb) ## 🚀 快速开始 ``` # 仅侦测,scope 自动从目标中派生 orthrus recon -t https://example.com --crawl-depth 3 # 完整 pipeline (recon → scan → confirm → report) → JSON orthrus scan -t https://example.com -o report.json # 查看所有选项 orthrus --help orthrus scan --help ``` ## 🧪 安全尝试 不要在别人的系统上学习使用该工具。请使用以下**已授权**的 目标: - **内置练习目标。** 本仓库在 `tests/integration/reflecting_target.py` 处附带了一个故意设计为存在漏洞的应用,它会在本地测试每一个扫描器: python tests/integration/reflecting_target.py 8791 # 终端 1 orthrus scan -t http://127.0.0.1:8791 --aggressive -o report.json # 终端 2 - **自建实验室**(您拥有该实例):OWASP Juice Shop,DVWA,OWASP WebGoat,bWAPP,OWASP Mutillidae II。 - **供应商授权的公共测试站点**,明确允许扫描: `testphp.vulnweb.com`,`testasp.vulnweb.com`,`rest.vulnweb.com` (Acunetix), `demo.testfire.net` (IBM),`ginandjuice.shop` (PortSwigger)。 ## 📖 使用指南 ORTHRUS 的核心子命令是 `recon`、`scan`、`exploit` 和 `report`,外加 扫描后分析与交付功能:`findings`(终端分类视图),`triage` (去重/聚类 + 可选的 LLM 误报判定),`chains` / `graph` (将漏洞发现关联成攻击路径 / 最大杀伤链),`runbook` (整合的修复计划,按顺序排列,使得最高效的修复措施——即能 打破攻击路径的修复——排在最前面),`finding`(设置漏洞发现的状态/所有者), `notify`(将高严重性的漏洞发现推送到 Slack / Jira,带有 `--dry-run`),以及 `patch`(为每个漏洞发现生成具体的配置/代码修复补丁)。 自动化与安全态势:`agent`(一个有边界的 LLM 规划器,它会对现有的 范围受限、非破坏性的扫描器进行排序——不运行 shell,不执行任意代码),`cloud` (只读的 CSPM/IAM 安全态势 + 有毒组合分析),以及 `proxy`(一个 具备范围感知的捕获代理,通过手动浏览向扫描器喂数据)。 实用命令:`doctor`(环境就绪情况),`modules`(模块清单), `diff`(比较两次扫描),`scans`(列出过往扫描),`benchmark` (检测准确性测试套件),`update`(刷新 CISA-KEV 情报),`serve`(REST API + 控制面板),`mcp`(用于 AI 代理的 MCP server),`iac`(基础设施即代码审计),以及 `completion`(Shell 自动补全)。运行 `orthrus --help` 获取完整列表。 ### `orthrus scan` — 完整的流水线 ``` # 显式指定 engagement scope (wildcard domains + CIDR),排除敏感路径 orthrus scan -t https://app.target.com \ --scope "*.target.com,api.target.com,10.0.0.0/24" \ --exclude-paths "/admin/delete/.*,/api/v1/payments" \ -o report.html --format html --template technical # 仅运行特定的 scanner 模块 orthrus scan -t https://app.target.com --modules sqli,xss,ssti,ssrf -o report.json # Aggressive 模式还会启用基于时间的盲注测试 (SQLi/cmd) 和 race conditions orthrus scan -t https://app.target.com --aggressive -o report.json # 认证扫描 (重用捕获的 session cookie + 额外的 headers) orthrus scan -t https://app.target.com \ --auth-cookie "session=abc123; csrf=def456" \ --headers '{"Authorization": "Bearer eyJ..."}' \ -o report.json # 通过代理路由 (例如 Burp),限制请求速率,提高超时时间 orthrus scan -t https://app.target.com --proxy http://127.0.0.1:8080 --rate-limit 10 --timeout 45 # 跳过确认阶段 (同时禁用 OOB 回调服务器) orthrus scan -t https://example.com --no-exploit -o report.json # 禁用 headless 浏览器 (跳过 DOM/stored XSS + 浏览器确认) orthrus scan -t https://example.com --no-browser -o report.json ``` 常见的 `scan` 选项:`--modules`,`--aggressive`,`--rate-limit`, `--crawl-depth`,`--max-pages`,`--timeout`,`--proxy`,`--auth-cookie`, `--user-agent`,`--callback`,`--no-exploit`,`--browser/--no-browser`, `--exclude-paths`,`--headers`,`--threads`,`--scan-id`,`-o/--output`, `--format`,`--template`,`--min-severity`,`--logo`,`--har`,`-v/--verbose`。 ### 针对您拥有的站点的完整端到端扫描(推荐工作流) `orthrus scan` 会在单个命令中运行全部四个阶段 — 侦察 → 扫描 → 漏洞利用确认 → 报告 — 并在您传入 `-o` + `--format` 时写入报告。安装了 `[browser]` 扩展包后,DOM/存储型 XSS 和 JS 渲染的爬取会自动包含在内。针对**您拥有或被明确授权测试的站点**,这是一个安全且对实时站点友好的流程: ``` # 1) 预览 engagement scope + 计划 — 不发送任何流量 orthrus scan -t https://yoursite.com --scope "yoursite.com,*.yoursite.com" --dry-run # 2) 使用温和的设置运行完整 pipeline → 技术 HTML 报告 orthrus scan -t https://yoursite.com \ --scope "yoursite.com,*.yoursite.com" \ --rate-limit 10 \ --crawl-depth 3 --max-pages 200 \ --exclude-paths "/logout,/admin/delete/.*" \ -o reports/yoursite.html --format html --template technical # 3) 从相同的已存储扫描中导出更多格式 (无需重新扫描) orthrus scans # list scans, copy the id orthrus report --scan-id --format pdf --template executive -o reports/yoursite_exec orthrus report --scan-id --format sarif -o reports/yoursite # CI / code-scanning orthrus report --scan-id --format json -o reports/yoursite # machine-readable ``` 根据您的目标进行调整: - **更深入的测试**(负载更高 — 刻意使用,最好在预发布环境):添加 `--aggressive` 以进行基于时间盲注的 SQLi/命令测试和竞争条件探测。 - **需认证的区域**:添加 `--auth-cookie "session=…; csrf=…"`(从您的浏览器开发者工具中复制已登录的 cookie),或者通过 `--login-url` 和相关参数驱动登录操作 (`orthrus scan --help`)。 - **监控每一个请求**:通过 `--proxy http://127.0.0.1:8080` 经由 Burp/ZAP 路由。 - **门控 CI**:添加 `--fail-on high`,以便在出现高危及以上漏洞发现时以非零状态退出。 ### `orthrus recon` — 仅侦察 ``` # 所有 recon 模块 (fingerprint, crawl, JS, content, WAF, API, DNS) orthrus recon -t https://example.com -o recon.json # 开启/关闭模块;添加 subdomain enum (需要 *.domain scope) 和 Wayback orthrus recon -t https://target.com --scope "*.target.com" \ --subdomains --wayback --no-content --crawl-depth 5 ``` ### `orthrus report` — 渲染现有的扫描 ``` # 报告从已存储的扫描中生成;选择格式 + 模板 orthrus report --scan-id scan-abcd1234 --format pdf --template executive -o exec_report orthrus report --scan-id scan-abcd1234 --format csv -o findings orthrus report --scan-id scan-abcd1234 --format html --template compliance --min-severity high -o audit ``` ### `orthrus exploit` ``` orthrus exploit --scan-id scan-abcd1234 ``` ## ⚙️ 配置说明 运行时设置会从环境变量(前缀为 `ORTHRUS_`)或 `.env` 文件中读取。基本的 SQLite 运行不需要任何配置。 | 变量 | 用途 | 默认值 | |---|---|---| | `ORTHRUS_DB_URL` | 数据库 URL (SQLite 或 PostgreSQL) | `sqlite+aiosqlite:///./orthrus.sqlite3` | | `ORTHRUS_DATA_DIR` | 屏幕截图 / 扫描工件目录 | `./scan_data` | | `ORTHRUS_LOG_LEVEL` | 默认日志级别 | `info` | | `ORTHRUS_ENCRYPTION_KEY` | base64 AES-256 密钥;静态加密敏感证据 | _(关闭)_ | | `ORTHRUS_REDIS_URL` | Celery 中间件/后端 (分布式模式) | `redis://localhost:6379/0` | | `ORTHRUS_PLUGINS_DIR` | 启动时自动加载的外部插件目录 | _(无)_ | | `ORTHRUS_SHODAN_API_KEY`, `ORTHRUS_CENSYS_API_ID`/`_SECRET`, `ORTHRUS_VIRUSTOTAL_API_KEY`, `ORTHRUS_NVD_API_KEY`, `ORTHRUS_GITHUB_TOKEN` | 可选的被动侦察 / CVE 情报凭证 | _(无)_ | ``` # 示例:PostgreSQL + 静态加密 export ORTHRUS_DB_URL="postgresql+asyncpg://orthrus:orthrus@localhost:5432/orthrus" export ORTHRUS_ENCRYPTION_KEY="$(python -c 'import base64,os;print(base64.b64encode(os.urandom(32)).decode())')" ``` ## 📑 报告生成 - **JSON** — 完整的结构化输出(每一个字段、证据、漏洞利用结果)。 - **CSV** — 每个漏洞发现占据一行(严重性、置信度、CVSS、类型、URL、参数、 参数位置、CWE、OWASP),适用于电子表格/分类。 - **HTML** — 带样式的报告;`technical` 包含原始的请求/响应证据和 屏幕截图,`executive` 是摘要,`compliance` 强调框架映射。 - **PDF** — 通过无头 Chromium 将 HTML 报告渲染为 PDF(需要 `[browser]`)。 - **SARIF** — 用于 CI / 代码扫描 控制面板的静态分析结果交换格式(如 GitHub 代码扫描);与 `--fail-on` 配合使用以对流水线进行门控。 - **Markdown** — 适用于工单、pull request 和 wiki 的便携纯文本报告。 - **ATT&CK Navigator** (`--format navigator`) — 一个 MITRE ATT&CK Navigator 层级的 JSON, 根据漏洞发现数量进行热力图映射;将其放入 [mitre-attack.github.io/attack-navigator](https://mitre-attack.github.io/attack-navigator/) 中即可在 ATT&CK 矩阵上查看该扫描结果。 每个漏洞发现都带有 CVSS v3.1 + v4.0 向量/评分,并映射到 OWASP Top 10、CWE、PCI-DSS、NIST-CSF、**MITRE ATT&CK**(结构化技术 ID),以及 **MITRE D3FEND** 对抗措施。针对特定漏洞的 ATT&CK 技术选择参考了 [Anthropic-Cybersecurity-Skills](https://github.com/mukul975/Anthropic-Cybersecurity-Skills) 目录 (Apache-2.0);这些 ID 均为公开的 MITRE 事实。 **分享终端视图。** `examples/render_report_ui.py` 会将任何 JSON 报告渲染为带有主题的终端 UI(横幅、范围面板、摘要、OWASP 覆盖情况、 漏洞发现表格),并导出 **SVG + HTML** 帧(当安装了 `[browser]` 扩展时还会导出 **PNG**)——适用于文档、幻灯片和工单: ``` orthrus scan -t http://127.0.0.1:8791 -o report.json python examples/render_report_ui.py report.json -o out/scan # → out/scan.svg, out/scan.html, out/scan.png ``` ## 🏭 生产环境:PostgreSQL 与分布式扫描 ``` # PostgreSQL 后端 (需要 [postgres]: asyncpg + alembic) export ORTHRUS_DB_URL="postgresql+asyncpg://orthrus:orthrus@localhost:5432/orthrus" alembic upgrade head # 跨 Celery workers 的分布式扫描 (需要 [distributed] + Redis) celery -A orthrus.distributed.celery_app worker --loglevel=info orthrus scan --distributed --workers 4 --redis redis://localhost:6379/0 -t targets.txt # 或者使用 Docker 启动整个 stack (app + workers + redis + postgres) docker compose -f docker/docker-compose.yml up -d --build docker compose -f docker/docker-compose.yml run --rm app scan -t https://example.com ``` ## 🧱 架构与项目结构 ``` orthrus/ core/ config, scope-enforced HTTP client, browser engine, callback server, orchestrator, schemas recon/ crawler, dynamic/SPA crawl, param-mining, fingerprint, JS analyzer, source-map recovery, content discovery, subdomain/DNS enum, WAF, API, wayback, ports scanners/ 58 scanners + base interface + registry exploits/ 17 confirmation modules + base interface + registry integrations/ external-tool adapters (nuclei, ...) normalized into findings intel/ CVE threat-intel enrichment (CISA KEV + EPSS) iac/ Infrastructure-as-Code misconfig analyzer (Dockerfile/compose/Terraform) api/ FastAPI REST API + web dashboard; mcp_server.py = MCP server reporting/ JSON/CSV/HTML/PDF/SARIF/Markdown generator, CVSS engine, Jinja2 templates db/ SQLAlchemy 2.0 models, async store, Alembic migrations distributed/ Celery app, tasks, target dispatcher utils/ logger, scope validator, rate limiter, encoding main.py Click CLI entry point docker/ Dockerfile + docker-compose (app, workers, redis, postgres) examples/ render_report_ui.py (report → themed SVG/HTML/PNG) + a sample report docs/ screenshots and supporting images tests/ unit tests + a bundled deliberately-vulnerable integration target ``` ## 🔌 扩展 ORTHRUS(插件) 扫描器、漏洞利用、侦察模块和报告器都是通过 装饰器自动发现的。只需放入一个继承了相关基类并注册 到 `ORTHRUS_PLUGINS_DIR`(或包内目录)的模块,它就会加入 流水线——无需修改核心代码。一个新的扫描器大致如下: ``` from orthrus.scanners.base_scanner import BaseScanner from orthrus.scanners.registry import register @register class MyScanner(BaseScanner): name = "my-scanner" vuln_type = "my-vuln" async def scan(self, ctx): # use ctx.http (scope-enforced) only; yield Finding(...) objects ... ``` ## 🧰 开发指南 ``` pip install -e ".[dev]" ruff check orthrus tests mypy orthrus pytest -q ``` 该测试套件是离线且确定性的(单元测试 + 内置的漏洞目标); 它不会触碰网络或任何外部主机。 ## ⚖️ 法律与道德使用规范 本软件仅提供用于**授权的安全测试、教育和研究目的。** - 仅对您**拥有**或被**明确书面授权** 测试的系统使用 ORTHRUS。请保留该授权的副本。 - 定义准确的 `--scope` 并遵守它。范围强制执行是一种安全辅助手段, 而不是法律庇护。 - 未经许可对系统运行主动扫描器/漏洞利用程序可能会违反 计算机滥用法(如 CFAA、英国 CMA、EU 2013/40 及同等法规),并可能导致 **刑事和民事责任**。 - 本软件按**“原样”提供,不提供任何形式的保证**。作者 和贡献者对其任何误用、损坏、数据丢失或法律 后果**不承担任何责任**。 - 使用 ORTHRUS 即表示您对自己的行为承担全部责任,并确认您 已获得测试每个目标所需的授权。 **如有疑问,请勿使用。** 请在内置目标或自建的实验环境中进行练习。 ## 🤝 贡献指南 欢迎提交 Issue 和 pull request — 请参阅 **[CONTRIBUTING.md](CONTRIBUTING.md)** 了解开发环境、质量门禁(`ruff check orthrus tests` + `pytest -q`),以及 如何添加扫描器。请保持更改对范围是安全的(所有网络访问都必须通过 强制执行范围的 `HttpClient`),并为新的检测器添加测试。 发现了**ORTHRUS 本身**的安全问题?请遵循 **[SECURITY.md](SECURITY.md)** 中的负责任披露 流程,而不是打开一个公开的 Issue。 ## 📄 开源许可 [MIT](LICENSE) © 2026 Ankit Jha。请参阅 LICENSE 文件中额外的**授权使用声明** 以及上方的[法律与道德使用规范](#-legal--ethical-use)部分。
标签:API安全, CISA项目, JSON输出, Python, Web安全, 云安全态势管理, 前端应用, 搜索引擎查询, 无后门, 测试用例, 特征检测, 网络测绘, 自动化渗透测试, 蓝队分析, 运行时操纵