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, 多模态安全, 实时处理, 密码管理, 无后门, 网络发现, 逆向工具