purehate/orca

GitHub: purehate/orca

ORCA 是一款针对 Odoo ERP 实例的免认证前端安全扫描器与网络发现工具,帮助安全人员发现影子部署、暴露的攻击面和已知漏洞。

Stars: 1 | Forks: 0

# ORCA — Ododo Recon & Configuration Analyzer **ORCA** 是一款无需认证、专注于前端的安全扫描器和网络发现工具,专门针对 Odoo ERP 实例。专为漏洞赏金猎人、渗透测试人员和安全团队设计,帮助他们发现影子/开发环境部署、暴露的攻击面以及已知漏洞——所有这些均无需提供凭证。 ## 功能 | 功能 | 描述 | |---------|-------------| | **无需认证优先** | 每一项检查均无需登录凭证即可运行 | | **大规模网络发现** | 扫描 `/16` 网络、CIDR 范围或主机列表以发现 Odoo 实例 | | **影子/开发环境搜寻** | 标记未经授权的开发测试盒和预发布部署 | | **版本指纹识别** | 通过 HTML 特征、XML-RPC、JSON-RPC 检测 Odoo 版本 | | **模块枚举** | 通过路径探测 + asset 解析发现已安装的前端模块 | | **CVE 关联** | 通过 NVD API 将检测到的版本 + 模块映射到已知 CVE | | **攻击面发现** | QWeb asset、自定义 controller、GraphQL、RPC endpoint | | **漏洞检测** | XSS、IDOR、开放重定向、敏感文件暴露、debug 模式、LFI、SSRF | | **Fuzzing 引擎** | 针对反射式注入的参数发现和 payload 变异 | | **多种输出格式** | 丰富的控制台表格、JSON、CSV 和独立 HTML 报告 | | **隐身控制** | 速率限制、抖动、代理支持、SSL 绕过 | ## 安装 ``` git clone https://github.com/purehate/orca.git cd orca pip install -e . ``` 要求 **Python ≥3.9**。 ## 快速开始 ### 全面安全扫描 ``` orca -u https://target.odoo.com ``` ### 网络发现 — 查找 Odoo 实例 ``` # 扫描 /24 网络 orca --discover -t 10.0.0.0/24 # 从文件扫描 IP 列表 orca --discover --target-file hosts.txt # 扫描自定义端口 orca --discover -t 192.168.1.0/24 --ports 80,443,8069,8080 ``` ### 影子/开发环境搜寻 — 查找未经授权的实例 ``` # 发现 + 标记 shadow dev boxes orca --discover -t 10.0.0.0/16 --shadow-hunt --threads 200 --timeout 3 # 将结果保存为 JSON 以供 SIEM 使用 orca --discover -t 10.0.0.0/16 --shadow-hunt -o findings.json --format json ``` ### 针对性安全检查 ``` # 仅运行特定检查 orca -u https://target.odoo.com --checks xss,idor,misconfig # 最低严重性过滤器 orca -u https://target.odoo.com --min-severity medium # 输出格式 orca -u https://target.odoo.com --format json -o report.json orca -u https://target.odoo.com --format html -o report.html orca -u https://target.odoo.com --format csv -o report.csv # Stealth 模式 orca -u https://target.odoo.com --rate 2 --jitter 30 --proxy http://127.0.0.1:8080 ``` ## 检查项 | 检查项 | 描述 | |-------|-------------| | `recon` | 版本、数据库列表、WAF 检测、模块枚举、注册暴露 | | `endpoints` | QWeb asset、manifest、GraphQL、自定义路由、CORS preflight | | `misconfig` | debug 模式、数据库管理器、缺失的安全标头、CORS 配置错误 | | `sensitive_files` | `.git`、`.env`、备份、配置、swagger、sitemaps | | `xss` | 针对 URL 参数、搜索字段、错误页面的反射型 XSS | | `idor` | 无需认证的 `/web/content`、`/web/image`、`/web/pdf`、RPC 读取 | | `auth_issues` | Session cookie 标记、开放重定向、密码重置行为 | | `disclosure` | 错误页面分析、`/website/info`、`base_import_module` 泄露 | | `rpc_surface` | XML-RPC/JSON-RPC 暴露、无需认证的 `call_kw` 访问 | | `cve` | 将检测到的版本 + 模块与 NVD CVE 数据库进行关联 | | `fuzzer` | 针对 HTML 表单的参数发现和 payload 变异 | | `reports` | PDF 报告暴露、CSV 导出、FEC 导出、发票 XSS | | `lfi` | 通过静态文件路径滥用进行本地文件包含 | | `ssrf` | 通过网站 URL 抓取功能和 webhook 进行 SSRF | | `exposure` | 危险模块:dbfilter、oauth、匿名化、payment token | | `source_leak` | 通过 asset 路径滥用导致源代码泄露 | ## 发现引擎 ORCA 的发现模式使用 **10 多个独特的 Odoo 标记**来识别大型网络中的实例: - `var odoo = { ... }` JavaScript 对象 - 登录表单中的 `csrf_token` - `data-website-id` HTML 属性 - `/web/static/` 和 `/web/assets/` 路径 - `Login | ` 标题模式 - `Werkzeug` 服务器标头(开发实例) - `openerp.` 遗留引用 - Odoo 特有的 CSS 类 (`o_*`) XML-RPC 版本探测用于确认不明确的主机。 ### 影子环境搜寻指标 | 指标 | 开发盒信号 | |-----------|---------------| | `werkzeug` | 正在运行开发服务器(无反向代理) | | `debug_mode` | 通过 `?debug=1` 启用调试 UI | | `db_manager` | 数据库管理器暴露 | | `db_listing` | 数据库可列出且名称带有 dev/test/demo | | `self_signed_ssl` | 无效/自签名证书 | | `dev_port` | 运行在 8069 或 8080 端口 | | `open_registration` | 启用了公开注册 | ## 退出码 | 代码 | 含义 | |------|---------| | 0 | 无发现 | | 1 | 中危发现 | | 2 | 高危发现 | | 3 | 严重发现 | ## 示例输出 ``` ╭────────────── Scan Summary ───────────────╮ │ Target: https://synergy.trustedsec.com │ │ Version: 18 │ │ Databases: trustedsec-production-12404823 │ │ Modules: 6 detected │ │ WAF: Cloudflare │ ╰───────────────────────────────────────────╯ HIGH (2) idor: Unauthenticated attachment access (IDOR) cve: Known CVE: CVE-2021-23178 MEDIUM (6) recon: Database listing enabled disclosure: Detailed error pages exposed idor: Unauthenticated image access (IDOR) fuzzer: Error disclosure via form fuzzing on /event cve: Known CVE: CVE-2021-44775 cve: Known CVE: CVE-2018-15641 LOW (3) misconfig: Missing security headers disclosure: /website/info page exposed rpc_surface: JSON-RPC /jsonrpc exposed ``` ## 架构 ``` orca/ ├── cli.py # Entry point (scan / discover / shadow-hunt) ├── core.py # Threaded scanner engine ├── discover.py # Mass network discovery ├── shadow_hunt.py # Dev/shadow instance detection ├── target.py # HTTP session + Odoo helpers ├── findings.py # Severity / Finding / ScanResult dataclasses ├── checks/ # 16 security check modules │ ├── recon.py │ ├── endpoints.py │ ├── misconfig.py │ ├── sensitive_files.py │ ├── xss.py │ ├── idor.py │ ├── auth_issues.py │ ├── disclosure.py │ ├── rpc_surface.py │ ├── cve.py │ ├── fuzzer.py │ ├── reports.py │ ├── lfi.py │ ├── ssrf.py │ ├── exposure.py │ └── source_leak.py ├── reporters/ # Console, JSON, HTML, CSV ├── data/ # Wordlists & payloads │ ├── odoo_paths.txt │ ├── controller_routes.txt │ ├── sensitive_paths.txt │ └── payloads/ └── utils/ # Colors, HTTP helpers, WAF detection ``` ## 许可证 Apache-2.0
标签:CISA项目, Maven构建, Odoo, Python, 多模态安全, 实时处理, 密码管理, 无后门, 网络发现, 逆向工具