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工具, 多模态安全, 攻击面发现, 日志审计