vetementsvmnts/API-Penetration-Testing
GitHub: vetementsvmnts/API-Penetration-Testing
基于 OWASP crAPI 构建的 API 渗透测试实验室,覆盖 OWASP API Top 10 漏洞的识别、利用与缓解。
Stars: 0 | Forks: 0
```
█████╗ ██████╗ ██╗ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗
██╔══██╗██╔══██╗██║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝
███████║██████╔╝██║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║
██╔══██║██╔═══╝ ██║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║
██║ ██║██║ ██║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝
```





**一个基于 OWASP crAPI 构建的实战化 API 渗透测试实验室 —— 涵盖注入、认证失效、DoS、Mass Assignment、数据暴露等内容。**
[跳转到模块](#-modules) · [实验室设置](#-lab-setup) · [OWASP 映射](#-owasp-api-top-10-coverage)
## 🧠 这是什么仓库?
这个仓库是一个**全面、结构化的 API 渗透测试实验室**,围绕 [OWASP crAPI](https://github.com/OWASP/crAPI) (Completely Ridiculous API) 构建 —— 这是一个专为安全研究设计的、存在有意漏洞的车辆管理平台。
## 📁 模块
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ PENTEST MODULE DIRECTORY │
├──────┬──────────────────────────────────────────┬───────────────────────────┤
│ # │ Module │ OWASP API Top 10 │
├──────┼──────────────────────────────────────────┼───────────────────────────┤
│ 01 │ SQL Injection Authentication Bypass │ API8 - Security Misconfig│
│ 02 │ OTP Bypass │ API2 - Broken Auth │
│ 03 │ XSS Exploitation │ API8 - Security Misconfig│
│ 04 │ Black-Box API Security Assessment │ Recon / Enumeration │
│ 05 │ API BOLA to SSRF Assessment │ API1 - BOLA │
│ 06 │ Broken Authentication Vulnerability │ API2 - Broken Auth │
│ 07 │ Excessive Data Exposure │ API3 - Data Exposure │
│ 08 │ Mass Assignment │ API6 - Mass Assignment │
│ 09 │ Layer 7 DoS API PenTest │ API4 - Resource Consump. │
└──────┴──────────────────────────────────────────┴───────────────────────────┘
```
### 📂 01 — SQL 注入身份验证绕过
```
██████╗ ██╗
██╔════╝ ███║
╚█████╗ ╚██║
╚═══██╗ ██║
██████╔╝ ██║
╚═════╝ ╚═╝ SQL INJECTION
```
**漏洞:** `API8:2023 - Security Misconfiguration` + `Injection`
**关键技术:**
- 在 JSON body 字段中使用经典的 `' OR '1'='1` 注入
- 基于布尔的盲注 SQLi 用于枚举用户
- 基于错误的注入以提取 schema 信息
- 通过 SQL 操纵绕过 JWT 签发
**使用工具:** `sqlmap`, `Burp Suite`, `curl`
**影响:** 完全绕过身份验证 → 未经授权访问任何用户账户
### 📂 02 — OTP 绕过
```
██████╗ ██████╗
██╔═══██╗╚════██╗
██║ ██║ █████╔╝
██║ ██║██╔═══╝
╚██████╔╝███████╗
╚═════╝ ╚══════╝ OTP BYPASS
```
**漏洞:** `API2:2023 - Broken Authentication`
一次性密码 (OTP) 的安全性仅取决于其周围的执行策略。该模块利用了 crAPI 的 OTP 验证 endpoint 上缺乏速率限制和暴力破解保护的缺陷 —— 允许在几秒钟内暴力破解 4 位数的 OTP。
**关键技术:**
- 对 4 位 OTP (0000–9999) 进行暴力破解枚举
- 无账户锁定 → 允许 10,000 次尝试
- 缺乏 OTP 过期机制导致重放攻击
- 响应时间分析以检测有效的 OTP
**使用工具:** `ffuf`, `Burp Intruder`, Python `requests`
**影响:** 通过密码重置流程实现账户接管 —— 无需钓鱼或恶意软件
### 📂 03 — XSS 漏洞利用
```
██╗ ██╗███████╗███████╗
╚██╗██╔╝██╔════╝██╔════╝
╚███╔╝ ███████╗███████╗
██╔██╗ ╚════██║╚════██║
██╔╝ ██╗███████║███████║
╚═╝ ╚═╝╚══════╝╚══════╝ XSS
```
**漏洞:** `API8:2023 - Security Misconfiguration` (缺乏输出编码)
**关键技术:**
**影响:** 会话劫持、凭据窃取、影响所有查看注入内容的用户的恶意重定向
### 📂 04 — 黑盒 API 安全评估
```
██████╗ ██╗ █████╗ ██████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
██╔══██╗██║ ██╔══██╗██╔════╝██║ ██╔╝ ██╔══██╗██╔═══██╗╚██╗██╔╝
██████╔╝██║ ███████║██║ █████╔╝ ██████╔╝██║ ██║ ╚███╔╝
██╔══██╗██║ ██╔══██║██║ ██╔═██╗ ██╔══██╗██║ ██║ ██╔██╗
██████╔╝███████╗██║ ██║╚██████╗██║ ██╗ ██████╔╝╚██████╔╝██╔╝ ██╗
╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
```
**重点:** API 侦察与枚举 (无先验知识)
该模块模拟了一个真实世界的黑盒测试场景,测试人员最初只有一个基础 URL。它记录了从头开始映射 crAPI 攻击面的完整侦察方法 —— 在进行任何漏洞利用之前,发现隐藏的 endpoint、推断数据模型并识别技术栈。
**关键技术:**
- 被动侦察:JavaScript 源码分析、响应 header 指纹识别
- 使用 `ffuf` 和自定义 API 字典进行主动 endpoint 发现
- OpenAPI/Swagger 规范发现 (`/api-docs`, `/swagger.json`, `/openapi.yaml`)
- HTTP 动词篡改以发现未记录的方法
- 通过响应差异进行参数挖掘
**使用工具:** `ffuf`, `Arjun`, `Burp Suite`, `curl`, `kiterunner`
**影响:** 建立在所有后续模块中使用的完整攻击面映射
### 📂 05 — 从 API BOLA 到 SSRF 评估
```
██████╗ ██████╗ ██╗ █████╗ ██╗
██╔══██╗██╔═══██╗██║ ██╔══██╗ ███║
██████╔╝██║ ██║██║ ███████║ ╚██║
██╔══██╗██║ ██║██║ ██╔══██║ ██║
██████╔╝╚██████╔╝███████╗██║ ██║ ██║
╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ BOLA → SSRF CHAIN
```
**漏洞:** `API1:2023 - Broken Object Level Authorization` → 转向 `SSRF`
该模块涵盖了 API 安全中最具影响力的漏洞链之一:从 BOLA (也称为 IDOR) 漏洞开始,然后将其与 SSRF 条件链接以访问内部服务。通过操纵 API 路径中的对象标识符,可以访问未经授权的车辆数据,并利用机械师联系 endpoint 触发出站 SSRF 请求。
**关键技术:**
- BOLA:替换 `vehicleId` / `userId` 参数以访问其他用户的对象
- 跨 crAPI 车辆记录的水平权限提升
- 通过 `/workshop/api/merchant/contact_mechanic` endpoint 进行 SSRF
- 通过 SSRF 进行内部端口扫描 (`127.0.0.1:8080`, `169.254.169.254`)
- 通过 SSRF 枚举 AWS 元数据服务
**使用工具:** `Burp Suite`, `curl`, 自定义 Python 脚本, Burp Collaborator
**影响:** 跨所有用户的未授权数据访问 + 内部网络侦察
### 📂 06 — 认证失效漏洞
```
█████╗ ██╗ ██╗████████╗██╗ ██╗
██╔══██╗██║ ██║╚══██╔══╝██║ ██║
███████║██║ ██║ ██║ ███████║
██╔══██║██║ ██║ ██║ ██╔══██║
██║ ██║╚██████╔╝ ██║ ██║ ██║
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ BROKEN AUTH
```
**漏洞:** `API2:2023 - Broken Authentication`
除了 OTP 绕过之外,该模块还深入研究了 crAPI 中完整的身份验证实现 —— 暴露了 JWT 弱点、token 生命周期管理不善以及可预测的 token 生成,这些都允许在没有凭据的情况下进行会话劫持。
**关键技术:**
- JWT `alg: none` 攻击 —— 剥离签名验证
- 使用 `hashcat` / `jwt-cracker` 暴力破解 JWT 密钥
- 注销后重用 token (无服务端失效)
- 弱/可预测的 JWT 密钥 (`secret`, `password`, `crapi`)
- Refresh token 滥用和长生命周期 token 利用
**使用工具:** `jwt_tool`, `hashcat`, `Burp Suite`, `jwt.io`
**影响:** 持久的会话劫持;为任何用户 (包括管理员) 伪造 token
### 📂 07 — 过度数据暴露
```
███████╗██╗ ██╗██████╗ ██████╗ ███████╗██╗ ██╗██████╗ ███████╗
██╔════╝╚██╗██╔╝██╔══██╗██╔═══██╗██╔════╝██║ ██║██╔══██╗██╔════╝
█████╗ ╚███╔╝ ██████╔╝██║ ██║███████╗██║ ██║██████╔╝█████╗
██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║╚════██║██║ ██║██╔══██╗██╔══╝
███████╗██╔╝ ██╗██║ ╚██████╔╝███████║╚██████╔╝██║ ██║███████╗
╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
```
**漏洞:** `API3:2023 - Broken Object Property Level Authorization`
API 通常返回比客户端应用程序显示多得多的数据 —— 信任前端来过滤敏感字段。该模块演示了拦截原始 API 响应如何揭示 UI 中隐藏但存在于 JSON payload 中的 PII、内部标志、密码哈希和管理级别属性。
**关键技术:**
**使用工具:** `Burp Suite`, `jq`, GraphQL Playground, 自定义 Python
**影响:** 大量 PII 收集;发现权限提升字段
### 📂 08 — Mass Assignment
```
███╗ ███╗ █████╗ ███████╗███████╗
████╗ ████║██╔══██╗██╔════╝██╔════╝
██╔████╔██║███████║███████╗███████╗
██║╚██╔╝██║██╔══██║╚════██║╚════██║
██║ ╚═╝ ██║██║ ██║███████║███████║
╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝ ASSIGNMENT
```
**漏洞:** `API6:2023 - Unrestricted Access to Sensitive Business Flows` / Mass Assignment
现代 API 框架通常会将所有 request body 属性自动绑定到内部对象。当开发者忘记将允许的字段加入白名单时,攻击者可以注入意外的属性 —— 只需在 POST/PUT body 中包含它们,即可提升权限、修改余额或覆盖受保护的属性。
**关键技术:**
- 在用户更新请求中添加 `"isAdmin": true`
- 向优惠券/购买 endpoint 注入 `"credit": 99999`
- 通过 PUT body 注入修改车辆所有权
- 对 request body 进行 Fuzzing 以发现可绑定的隐藏字段
- 比较 request schema 与 response schema 以识别可注入字段
**使用工具:** `Burp Suite`, `Arjun` (参数发现), 自定义 Python
**影响:** 提升至管理员的权限;欺诈性的信用操纵;未经授权的资源所有权转移
### 📂 09 — Layer 7 DoS API 渗透测试
```
██████╗ ██████╗ ███████╗
██╔══██╗██╔═══██╗██╔════╝
██║ ██║██║ ██║███████╗
██║ ██║██║ ██║╚════██║
██████╔╝╚██████╔╝███████║
╚═════╝ ╚═════╝ ╚══════╝ LAYER 7 DOS
```
**漏洞:** `API4:2023 - Unrestricted Resource Consumption`
与淹没网络层的容量型 DDoS 攻击不同,Layer 7 DoS 利用**应用程序逻辑本身** —— 针对高消耗操作、缺失的速率限制和无限制的查询参数,以最少的流量耗尽服务器资源。该模块演示了针对 crAPI 的多种 L7 DoS 向量。
**关键技术:**
- 登录 endpoint 洪水攻击 (无速率限制 → 从不返回 429)
- 无限制的分页滥用 (`?limit=100000` — 服务器执行完整查询)
- 大型 payload 注入以耗尽内存/处理能力
- 密码重置洪水攻击以压倒邮件服务
- Slowloris 风格的 HTTP keep-alive 耗尽
- 通过在促销代码字段中精心构造的 regex 输入进行 ReDoS
**使用工具:** `vegeta`, `ffuf`, `slowhttptest`, `hey`, `wrk`, Python `asyncio` + `httpx`
**影响:** 影响所有用户的服务降级/中断;可能导致配置较低部署环境的内存耗尽
## 🧪 实验室设置
```
┌─────────────────────────────────────────────────┐
│ CRAPI LAB ENVIRONMENT │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web App │ │ API │ │ Mailhog │ │
│ │ :8888 │◄──►│ :8888 │ │ :8025 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ ┌──────────────────────────────────────┐ │
│ │ Docker Network │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
```
```
# 1. Clone crAPI
git clone https://github.com/OWASP/crAPI.git && cd crAPI
# 2. 启动所有服务
docker compose -f deploy/docker/docker-compose.yml up -d
# 3. 验证
docker compose ps
# 访问: http://localhost:8888
```
**推荐工具栈:**
| 类别 | 工具 |
|---|---|
| 代理 / 拦截 | Burp Suite Community / Pro |
| Fuzzing | `ffuf`, `kiterunner`, `Arjun` |
| 认证测试 | `jwt_tool`, `hashcat` |
| 负载测试 | `vegeta`, `hey`, `wrk` |
| 脚本编写 | Python 3 + `httpx`, `requests`, `asyncio` |
| 侦察 | `curl`, `jq`, Postman |
## 🗺 OWASP API Top 10 覆盖范围
| OWASP ID | 漏洞类别 | 模块 |
|---|---|---|
| API1:2023 | Broken Object Level Authorization (BOLA/IDOR) | 05 |
| API2:2023 | Broken Authentication | 02, 06 |
| API3:2023 | Broken Object Property Level Authorization | 07 |
| API4:2023 | Unrestricted Resource Consumption | 09 |
| API6:2023 | Unrestricted Access to Sensitive Business Flows | 08 |
| API8:2023 | Security Misconfiguration | 01, 03 |
| 侦察 | 枚举与攻击面映射 | 04 |
| 链接 | BOLA → SSRF 漏洞利用链 | 05 |
## ⚖️ 法律与道德
**以好奇心构建。以知识保卫。**

标签:API安全, CISA项目, GraphQL, JSON输出, OPA, REST API, 逆向工具, 靶场