vetementsvmnts/API-Penetration-Testing

GitHub: vetementsvmnts/API-Penetration-Testing

基于 OWASP crAPI 构建的 API 渗透测试实验室,覆盖 OWASP API Top 10 漏洞的识别、利用与缓解。

Stars: 0 | Forks: 0

``` █████╗ ██████╗ ██╗ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ██╔══██╗██╔══██╗██║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ███████║██████╔╝██║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ██╔══██║██╔═══╝ ██║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ██║ ██║██║ ██║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ```
![API Security](https://img.shields.io/badge/Focus-API%20Security-red?style=for-the-badge&logo=hackthebox&logoColor=white) ![OWASP](https://img.shields.io/badge/OWASP-API%20Top%2010-blue?style=for-the-badge&logo=owasp&logoColor=white) ![Platform](https://img.shields.io/badge/Platform-crAPI%20%7C%20REST%20%7C%20GraphQL-green?style=for-the-badge) ![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge) ![Status](https://img.shields.io/badge/Status-Active%20Research-orange?style=for-the-badge) **一个基于 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 | ## ⚖️ 法律与道德
**以好奇心构建。以知识保卫。** ![Visitors](https://img.shields.io/badge/Keep%20Learning-Stay%20Curious-blueviolet?style=flat-square)
标签:API安全, CISA项目, GraphQL, JSON输出, OPA, REST API, 逆向工具, 靶场