rendidwisa/aura
GitHub: rendidwisa/aura
AURA 是一款专注于自动发现 Web API 中 IDOR 与 BOLA 授权漏洞的 CLI 扫描器。
Stars: 0 | Forks: 0
# AURA — IDOR & BOLA 漏洞扫描器
安全、自动化的 IDOR/BOLA 检测,输出可直接用于分类筛选的结果。
AURA 是一款 CLI 扫描器,专注于发现 Web 应用和 API 中的**不安全的直接对象引用
(IDOR)** 和 **对象级别授权失效 (BOLA)** 漏洞。它会从目标的 HTML/JS
bundle 中发现 endpoint,使用你自己的 auth token 和替换后的 object ID 对其进行测试,
并且仅报告看起来像是真正授权绕过的响应。
## 功能
- IDOR 检测(路径和查询参数替换)
- BOLA 检测,支持基于状态码的确认(过滤掉 401/403/404 噪音)
- 从 HTML、JS bundle 和 source map 自动发现 endpoint
- 支持 JWT / Bearer / Cookie / Basic / 自定义 header 认证
- 可配置的并发和速率限制
- 支持 `table`、`text`、`json` 和 `csv` 输出格式
- 对 CI 友好的退出码
## 安装说明
从源码构建(推荐使用 Go 1.21+):
```
git clone https://github.com/rendidwisa/aura.git
cd aura
go build -o aura ./cmd/aura
```
要嵌入版本信息(如同 release pipeline 所做的那样):
```
go build -ldflags "-X main.version=1.0.0 -X main.commit=$(git rev-parse --short HEAD) -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" -o aura ./cmd/aura
```
## 快速开始
```
# 基础扫描,无 auth
./aura --target https://api.example.com
# 使用 bearer/JWT token 进行扫描
./aura --target https://api.example.com --token YOUR_JWT_TOKEN
# 调整 concurrency 和 rate limit
./aura --target https://api.example.com --threads 20 --rate-limit 50
# 通过 proxy 路由,将 JSON 结果写入文件
./aura --target https://api.example.com --proxy http://localhost:8080 --format json --output results.json
# 使用 config file 替代 flags
./aura --config config.yml
```
## Flags
| Flag | 描述 | 默认值 |
|---|---|---|
| `--target string` | 要扫描的目标 URL (**必填**) | — |
| `--token string` | 身份验证 token | — |
| `--auth-type string` | `jwt`、`bearer`、`cookie`、`basic`、`header` | `jwt` |
| `--cookie string` | 用于身份验证的 Cookie header 值 | — |
| `--proxy string` | 代理 URL,例如 `http://proxy:8080` | — |
| `--threads int` | 并发工作线程数 | `10` |
| `--rate-limit int` | 每秒最大请求数 | `100` |
| `--timeout int` | 请求超时时间(秒) | `30` |
| `--max-retries int` | 每个请求的最大重试次数 | `3` |
| `--depth int` | 扫描深度 | `3` |
| `--max-requests int` | 扫描的最大请求总数 | `1000` |
| `--format string` | `table`、`text`、`json`、`csv` | `table` |
| `--output string` | 将结果写入此文件而不是 stdout | — |
| `--config string` | YAML 配置文件的路径 | — |
| `--fuzz` | 启用 fuzz payload 测试 | `false` |
| `--verbose` | 启用 debug 日志记录 | `false` |
| `--quiet` | 抑制输出 | `false` |
| `--version` / `-v` | 显示版本并退出 | — |
| `--help` | 显示用法并退出 | — |
## 环境变量
下面列出的所有环境变量均受完全支持,它们将覆盖
配置文件中的等效设置(但它们本身会被 CLI
flags 覆盖)。
| 变量 | 等效 flag | 状态 |
|---|---|---|
| `AURA_TARGET` | `--target` | ✅ 完全支持 |
| `AUTH_AUTH_TOKEN` | `--token` | ✅ 完全支持 |
| `AURA_AUTH_TYPE` | `--auth-type` | ✅ 完全支持 |
| `AURA_AUTH_COOKIE` | `--cookie` | ✅ 完全支持 |
| `AURA_PROXY` | `--proxy` | ✅ 完全支持 |
| `AURA_TIMEOUT` | `--timeout` | ✅ 完全支持 |
| `AURA_RATE_LIMIT` | `--rate-limit` | ✅ 完全支持 |
| `AURA_THREADS` | `--threads` | ✅ 完全支持 |
| `AURA_ENABLE_FUZZ` | `--fuzz` | ✅ 完全支持 |
| `AURA_OUTPUT_FORMAT` | `--format` | ✅ 完全支持 |
| `AURA_OUTPUT_FILE` | `--output` | ✅ 完全支持 |
| `AURA_VERBOSE` | `--verbose` | ✅ 完全支持 |
**优先级顺序**(从高到低):
1. CLI flags
2. 环境变量
3. 配置文件
4. 默认值
## 退出码
| 代码 | 含义 |
|---|---|
| `0` | 扫描完成,未发现漏洞 |
| `1` | 配置错误或扫描失败 |
| `2` | 扫描完成,发现漏洞 |
退出码 `2` 使得 AURA 能够轻松作为一道关卡接入 CI。
## 已知局限性
| 局限性 | 详情 |
|---|---|
| 仅限 GET | IDOR/BOLA 检测只发送 GET 请求;POST/PUT/PATCH/DELETE 已在 payload 中定义但尚未经过测试 |
| 无自动登录 | 必须通过 `--token`/`--cookie` 手动提供 token;不支持登录流程自动化 |
| 依赖 JS 的发现 | Endpoint 发现依赖于 JS bundle 分析;纯服务端渲染的应用会回退到静态 payload endpoint |
| 单一 token | 多账户测试(用户 A vs 用户 B)尚未成为核心功能 |
| 无正文过滤 | 如果一个 endpoint 无论 ID 是什么总是返回当前登录用户自己的数据,它可能仍会被标记 —— 需要手动验证 |
| 不支持 GraphQL | 仅分析 REST 风格的 URL 模式 |
| `--depth` flag | 目前已解析但尚未实现(爬取深度计划在未来的版本中发布) |
请参阅 [ARCHITECTURE.md](./docs/ARCHITECTURE.md) 了解完整的内部架构和设计原理。
## License
待定 (TBD) — 在公开发布之前,请添加一个 `LICENSE` 文件(例如 MIT/Apache-2.0)。
标签:API安全, CISA项目, EVTX分析, Go, JSON输出, Linux安全, Ruby工具, Web安全, 加密, 文档结构分析, 日志审计, 漏洞扫描器, 蓝队分析, 越权漏洞