vanshaj-pagotra/shadow-api-scanner
GitHub: vanshaj-pagotra/shadow-api-scanner
一款被动式 API 攻击面发现工具,通过比对服务器访问日志与 OpenAPI 规范来识别未文档化的影子 API 并标记潜在安全风险。
Stars: 0 | Forks: 0
# Shadow API Scanner
一款快速、被动的 API 攻击面发现工具,旨在通过将 Web 服务器访问日志与 OpenAPI 和 Swagger 规范进行比对,来识别未记录在案的 API。
## 🚀 功能
- **被动分析**:直接解析标准的 Nginx/Apache 访问日志。无需主动拦截,没有网络开销,对您的生产服务器零性能影响。
- **多规范支持**:原生解析并理解 YAML 和 JSON 格式的 **OpenAPI 3.0** 和 **Swagger 2.0**。
- **智能路径比对**:自动规范化基础路径,转换参数化路径(例如,`/user/{id}` 匹配 `/user/123`),并处理动态路由。
- **降噪处理**:自动过滤掉失败的请求(404、403、500),确保扫描器仅标记实际存在且正在活跃响应的 endpoint。
- **漏洞启发式检测**:基于路径分析和命名约定,为发现的 Shadow API 标记潜在的 **OWASP API Security Top 10 (2023)** 风险(例如,Broken Object Level Authorization、Broken Function Level Authorization、Security Misconfiguration)。
- **交互式报告**:生成一个美观、流畅且可搜索的 HTML 仪表盘,详细列出已记录的 API 和 Shadow API。
## 🛠️ 安装说明
请确保您已安装 [Go](https://go.dev/)(1.20+)。
```
git clone https://github.com/vanshaj-pagotra/shadow-api-scanner.git
cd shadow-api-scanner
# 下载 dependencies
go mod download
# 构建 executable
go build -o shadow-api-scanner
```
## 💻 用法
此 CLI 工具使用极其简单,主要包含三个参数标志:
* `--log`:Web 服务器访问日志的路径(Combined Log Format)。
* `--spec`:您的 API 规范文件的路径(YAML 或 JSON)。
* `--out`:生成的 HTML 报告的输出路径。
### 运行示例
```
./shadow-api-scanner --log --spec --out
```
## 🧠 工作原理
1. **日志摄取**:`parser` 使用标准的 Combined Log Format 正则表达式读取并规范化原始访问日志,提取 IP、Method、Path 和 Status Code。
2. **规范解析**:`spec` 模块加载提供的文件,识别版本(OpenAPI 3 或 Swagger 2),提取 server/base 路径,并将所有已记录的 endpoint 展平为正则表达式。
3. **比对引擎**:核心 `engine` 遍历实时流量。它会根据编译后的 spec 正则表达式模式检查每条成功的日志条目。如果某个路径在服务器上成功解析但未在 spec 中定义,它会立即被标记为 Shadow API。
4. **报告生成**:`report` 模块会分析 Shadow API 中是否存在高风险命名模式(如 `/admin`、`/debug`、`/[0-9]+/`),并输出一个静态的、带样式的 HTML 仪表盘。
## 📊 HTML 报告
生成的 HTML 文件完全是静态的,无需 Web 服务器即可查看。只需双击即可在浏览器中打开。它包含:
* **仪表盘统计**:提供扫描日志总数、已记录的命中数以及发现的 Shadow endpoint 的高级概览。
* **已记录的 API 选项卡**:显示按其 Swagger 标签分组的正在活跃使用的 API。
* **Shadow API 选项卡**:突出显示未记录的 endpoint,并标记有计算出的风险严重程度(高、中、低)以及潜在的 OWASP 漏洞。
* **实时搜索**:一个客户端搜索栏,可按路径、方法或摘要即时筛选攻击面。
标签:API安全, Docker容器, EVTX分析, Go, Homebrew安装, JSON输出, OpenAPI, Ruby工具, 多模态安全, 攻击面发现, 日志审计