用途:面向 OWASP API9 不当清单管理,发现影子/僵尸/未文档化 API,重点不在单个端点,而在旧版本与当前版本对同一操作的规则差异。触发场景包括出现带版本号路径、Accept/X-API-Version 头、变更日志或弃用通知,移动端 APK/IPA 硬编码疑似旧后端端点,或多个 OpenAPI/Swagger 规范可被发现。单版本无历史 API 不适用,应改用 hunt-api-misconfig。
主要阶段与用法:
- 枚举版本面:对 v1、v2、beta、legacy、旧日期等路径做 curl 探测;测试 X-API-Version 与 vendor Accept 头;枚举 api-v1、legacy-api、internal-api 等子域名。返回非 404/连接拒绝即视为存活。
- 拉取所有可达规范:探测 openapi.json、swagger.json、v3/api-docs、.well-known/openapi.json 等路径,并用 Wayback Machine CDX 查询已下线但被索引的规范。用 jq 提取 paths,再用 comm 比对版本差异,仅旧规范收录且仍可达者为僵尸端点候选。
- 行为差异:对两端点比较鉴权强度(过期或低权限令牌)、限流(旧版缺失 429)、输入校验(旧版接受而被新版拒绝,可链至 hunt-sqli、hunt-idor)和字段暴露(PII、内部 ID)。
- 未被当前 UI 引用的路由:在 JS bundle 中 grep /internal/、/admin/、/debug/ 等,检查 robots.txt 与 sitemap.xml,并将 APK/IPA 端点清单视为版本比对候选。
限制与误报门:仅响应结构差异属信息级;需确认是鉴权、限流或校验的安全性回归。判定差异前先排除旧端点为当前实现的别名或代理;返回弃用提示但仍执行的操作才有效。严重度:旧版完全绕过鉴权为严重;缺限流、字段泄露为中高;接受未校验载荷为高;可达但行为一致为信息级。可链 hunt-api-misconfig、hunt-subdomain、hunt-source-leak、apk-redteam-pipeline、ios-redteam-pipeline、hunt-brute-force。具体价格与平台信息暂未提供。