OWASP Juice Shop 教學:免費實戰演練網站安全漏洞完整攻略

TL;DR
- OWASP Juice Shop 是免費的網站安全練習平台
- 包含超過 100 個漏洞挑戰,難度從 1 星到 6 星
- 支援 Docker 一鍵部署,幾分鐘就能開始練習
- 涵蓋 OWASP Top 10 所有漏洞類型
- 適合資安初學者、開發者、CTF 愛好者
什麼是 OWASP Juice Shop?
OWASP Juice Shop 是全球最受歡迎的網站安全練習平台。它是一個故意設計成有漏洞的線上果汁商店網站。
Juice Shop 的特點:
- 完全免費開源:任何人都可以使用
- 真實的現代技術棧:使用 Angular + Node.js + SQLite
- 超過 100 個挑戰:涵蓋各種漏洞類型
- 遊戲化設計:解鎖成就、計分板、進度追蹤
- 持續更新:跟上最新的安全趨勢
和 CTF(Capture The Flag)比賽不同,Juice Shop 更注重學習。每個漏洞都對應到真實世界的安全問題。
想了解 OWASP 組織和其他安全專案,可以參考 OWASP 完整指南。
插圖:OWASP Juice Shop 網站首頁截圖,顯示果汁商品...
場景描述: OWASP Juice Shop 網站首頁截圖,顯示果汁商品列表、購物車圖示、搜尋欄。頂部導覽列有登入按鈕,整體設計為綠色主題的電商網站風格。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
owasp-juice-shop-homepage
包含哪些漏洞類型?
Juice Shop 涵蓋的漏洞類型和 OWASP Top 10 完全對應:
| 漏洞類型 | 挑戰數量 | 難度範圍 |
|---|---|---|
| Injection(注入攻擊) | 15+ | 1-6 星 |
| Broken Authentication(認證失效) | 10+ | 1-5 星 |
| Sensitive Data Exposure(敏感資料洩露) | 12+ | 1-4 星 |
| XSS(跨站腳本攻擊) | 8+ | 1-4 星 |
| Broken Access Control(存取控制失效) | 15+ | 1-5 星 |
| Security Misconfiguration(安全設定錯誤) | 8+ | 1-3 星 |
| Cryptographic Failures(加密失效) | 6+ | 2-5 星 |
| 其他(SSRF、XXE、反序列化等) | 20+ | 2-6 星 |
難度分級說明
Juice Shop 使用 1-6 星評級系統:
| 星級 | 難度 | 適合對象 | 所需技能 |
|---|---|---|---|
| ⭐ | 極簡單 | 完全新手 | 會用瀏覽器就行 |
| ⭐⭐ | 簡單 | 初學者 | 基本 Web 知識 |
| ⭐⭐⭐ | 中等 | 有基礎者 | 了解 HTTP、會用開發者工具 |
| ⭐⭐⭐⭐ | 困難 | 進階者 | 熟悉攻擊技術 |
| ⭐⭐⭐⭐⭐ | 很困難 | 專家 | 需要創意和深度技術 |
| ⭐⭐⭐⭐⭐⭐ | 極困難 | 高手 | 需要組合多種技術 |
建議從 1 星開始,循序漸進。
環境建置
有多種方式可以運行 Juice Shop。選擇最適合你的方法。
方法一:Docker 安裝(推薦)
最簡單的方式。只要有 Docker 就能用。
# 拉取映像檔
docker pull bkimminich/juice-shop
# 執行
docker run -d -p 3000:3000 bkimminich/juice-shop
# 開啟瀏覽器
# http://localhost:3000
完成!幾分鐘就能開始練習。
Docker Compose 版本(方便管理):
# docker-compose.yml
version: '3'
services:
juice-shop:
image: bkimminich/juice-shop
ports:
- "3000:3000"
restart: unless-stopped
docker-compose up -d
方法二:Node.js 安裝
如果想看原始碼或修改設定,可以用這個方法。
系統需求:
- Node.js 18 或更新版本
- npm 或 yarn
# 下載原始碼
git clone https://github.com/juice-shop/juice-shop.git
cd juice-shop
# 安裝相依套件
npm install
# 啟動
npm start
# 開啟 http://localhost:3000
方法三:雲端部署
想要隨時隨地練習,可以部署到雲端。
Heroku 部署:
# 需要 Heroku CLI
heroku login
heroku create my-juice-shop
git push heroku main
其他選項:
- Google Cloud Run
- AWS Elastic Beanstalk
- Azure App Service
注意:不要把 Juice Shop 部署在公開可存取的地方而不加保護。它故意設計成有漏洞的。
挑戰攻略
以下介紹各難度的代表性挑戰和解法思路。
重要提醒:直接看解答會失去學習效果。建議先自己嘗試,卡住再來參考。
1-2 星挑戰:入門
這些挑戰幫你熟悉環境和基本技巧。
挑戰:Score Board(找到計分板)
難度:⭐
目標:找到隱藏的計分板頁面
提示:
- 計分板是追蹤進度的地方
- 它被「隱藏」了,但不是真的隱藏
解法思路:
- 開啟瀏覽器開發者工具(F12)
- 查看 JavaScript 檔案
- 搜尋「score」相關的路由
- 或者直接猜
/score-board
挑戰:DOM XSS
難度:⭐
目標:執行 DOM-based XSS 攻擊
提示:
- 搜尋功能可能有問題
- 試試在搜尋欄輸入特殊字元
解法思路:
- 在搜尋欄輸入:
<iframe src="javascript:alert('xss')"> - 觀察頁面反應
挑戰:Confidential Document(機密文件)
難度:⭐
目標:找到機密文件
提示:
- 網站可能有一些不該公開的檔案
- 試著探索目錄結構
解法思路:
- 瀏覽網站,找到「關於我們」等頁面
- 查看是否有連結指向文件
- 嘗試存取
/ftp目錄 - 下載機密文件
3-4 星挑戰:進階
需要更多技術知識和創意。
挑戰:Login Admin(登入管理員帳號)
難度:⭐⭐
目標:以管理員身份登入
提示:
- SQL Injection 是老朋友了
- 登入表單可能沒有好好處理輸入
解法思路:
- 在登入頁面的 Email 欄位輸入:
' OR 1=1-- - 密碼隨便填
- 點擊登入
這是經典的 SQL Injection。系統執行的查詢變成:
SELECT * FROM Users WHERE email='' OR 1=1--' AND password='xxx'
OR 1=1 永遠為真,-- 註解掉後面的密碼檢查。
挑戰:Forged Feedback(偽造回饋)
難度:⭐⭐⭐
目標:以其他使用者身份提交回饋
提示:
- 回饋表單有隱藏欄位
- 可以用開發者工具或 Proxy 修改
解法思路:
- 開啟回饋頁面
- 使用開發者工具找到
userId隱藏欄位 - 修改成其他使用者的 ID
- 提交表單
這展示了「不要信任客戶端」的重要性。
挑戰:Basket Access(存取他人購物車)
難度:⭐⭐⭐
目標:看到其他使用者的購物車內容
提示:
- API 可能有存取控制問題
- 試著修改請求中的 ID
解法思路:
- 登入自己的帳號,進入購物車
- 觀察 API 請求,找到
/rest/basket/X - 修改 X 為其他數字(如 1、2)
- 查看回應
這是 BOLA(Broken Object Level Authorization)漏洞,在 OWASP API Top 10 中排名第一。
插圖:瀏覽器開發者工具畫面,Network 標籤頁顯示 API 請...
場景描述: 瀏覽器開發者工具畫面,Network 標籤頁顯示 API 請求列表,其中一個 basket 請求被選中,右側顯示請求和回應的 JSON 資料。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
juice-shop-developer-tools-api
5-6 星挑戰:專家級
需要深度技術知識和創意思維。
挑戰:NoSQL Injection
難度:⭐⭐⭐⭐
目標:利用 NoSQL Injection 漏洞
提示:
- 商品評論功能使用 MongoDB
- NoSQL 的注入方式和 SQL 不同
解法思路:
需要了解 MongoDB 的查詢語法,利用 $ne、$gt 等運算子進行注入。
挑戰:Forged Signed JWT
難度:⭐⭐⭐⭐⭐
目標:偽造有效的 JWT Token
提示:
- JWT 的安全性依賴於簽章
- 某些情況下簽章可以被繞過
解法思路:
- 取得現有的 JWT Token
- 解碼查看結構
- 研究 JWT 常見攻擊(如
alg: none) - 嘗試偽造 Token
挑戰:RCE(Remote Code Execution)
難度:⭐⭐⭐⭐⭐⭐
目標:在伺服器上執行任意程式碼
提示:
- 這是最嚴重的漏洞類型
- 需要找到能執行程式碼的進入點
解法思路: 需要結合多個漏洞,找到可以注入並執行程式碼的地方。這類挑戰需要深厚的功底。
學習路線建議
根據你的背景,選擇適合的學習路線。
初學者路線(0 基礎)
目標:建立基本觀念,完成 1-2 星挑戰
學習步驟:
- 先學習基本 Web 知識(HTML、HTTP、Cookie)
- 學會使用瀏覽器開發者工具
- 完成所有 1 星挑戰
- 閱讀每個漏洞的說明
- 挑戰 2 星題目
預計時間:2-4 週
推薦資源:
- MDN Web 文件
- OWASP Top 10 說明文件
- YouTube 教學影片
進階者路線(有開發經驗)
目標:理解常見漏洞原理,完成 3-4 星挑戰
學習步驟:
- 快速完成 1-2 星熱身
- 學習使用 Burp Suite 或 OWASP ZAP
- 系統性地學習每種漏洞類型
- 完成 3-4 星挑戰
- 研究挑戰背後的原理
預計時間:4-8 週
推薦資源:
- PortSwigger Web Security Academy
- OWASP Testing Guide
- HackTheBox
專家路線(資安從業者)
目標:精通各種攻擊技術,完成 5-6 星挑戰
學習步驟:
- 快速通關 1-4 星
- 深入研究高難度漏洞
- 嘗試不看提示解題
- 研究原始碼理解漏洞成因
- 挑戰在時間限制內完成
預計時間:持續精進
推薦資源:
- 實際 Bug Bounty 計畫
- CTF 比賽
- 資安研討會
想從練習進階到實戰?讓專家帶你評估真實系統
其他 OWASP 練習平台
除了 Juice Shop,OWASP 還提供其他練習平台。
OWASP WebGoat
WebGoat 是 OWASP 最早的練習平台。比 Juice Shop 更偏向「教學」。
特點:
- 每個漏洞都有詳細的教學說明
- 一步步引導你完成攻擊
- 適合系統性學習
- 使用 Java 開發
安裝方式:
docker pull webgoat/webgoat
docker run -p 8080:8080 -p 9090:9090 webgoat/webgoat
比較:
| 面向 | Juice Shop | WebGoat |
|---|---|---|
| 風格 | 遊戲化、自由探索 | 教學式、按部就班 |
| 難度 | 1-6 星廣泛 | 偏基礎 |
| 技術棧 | Node.js + Angular | Java |
| 適合 | CTF 愛好者 | 系統性學習者 |
OWASP BWA(Broken Web Applications)
BWA 是一個包含多個有漏洞應用的虛擬機。
包含的應用:
- DVWA(Damn Vulnerable Web App)
- Mutillidae
- WebGoat
- 還有其他數十個
特點:
- 一次擁有多個練習環境
- 需要較多系統資源
- 某些應用已經過時
適合:想要比較不同練習平台的人
平台選擇建議
| 你的需求 | 推薦平台 |
|---|---|
| 快速開始、好玩 | Juice Shop |
| 系統性學習、需要教學 | WebGoat |
| 多種環境、深度練習 | BWA |
| 真實感、進階挑戰 | HackTheBox、TryHackMe |
搭配 OWASP ZAP 練習
Juice Shop 和 OWASP ZAP 是絕配。一個提供漏洞環境,一個提供測試工具。
設定 ZAP Proxy
- 啟動 ZAP
- 設定瀏覽器 Proxy 指向 localhost:8080
- 瀏覽 Juice Shop 網站
- ZAP 會自動記錄所有流量
使用 ZAP 找漏洞
被動掃描: 正常瀏覽 Juice Shop,ZAP 會自動分析回應,找出明顯問題(如缺少安全 Header)。
主動掃描: 對 Juice Shop 執行主動掃描,讓 ZAP 自動測試各種攻擊向量。
右鍵點擊 Sites 中的 Juice Shop
→ Attack → Active Scan
→ 等待掃描完成
→ 查看 Alerts 標籤
手動測試: 使用 ZAP 的「Manual Request Editor」修改請求,測試 API 漏洞。
詳細的 ZAP 使用教學可以參考 OWASP ZAP 完整教學。
插圖:分割畫面左側顯示 OWASP ZAP 介面的 Sites 樹...
場景描述: 分割畫面左側顯示 OWASP ZAP 介面的 Sites 樹狀圖和 Alerts 面板,右側顯示 Juice Shop 網站。兩者透過代理連接,展示安全測試的工作流程。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
juice-shop-zap-integration
練習建議
- 先手動嘗試:培養直覺
- 再用工具驗證:學習工具能找到什麼
- 比較差異:理解自動化工具的限制
- 研究原理:知道為什麼這樣攻擊會成功
常見問題 FAQ
Q1:Juice Shop 可以用於面試準備嗎?
可以,很有幫助。
Juice Shop 能幫你準備的面向:
技術面試:
- 能說出具體的漏洞利用經驗
- 展示對 OWASP Top 10 的理解
- 有實際的練習紀錄可以分享
實作測驗: 一些公司會給 CTF 風格的測驗。Juice Shop 的練習能讓你更熟悉這類題目。
準備建議:
- 至少完成 50% 的挑戰
- 能清楚解釋每種漏洞的原理和防護方式
- 準備幾個印象深刻的挑戰當故事講
- 了解漏洞在真實世界的影響
Q2:完成所有挑戰需要多久?
視經驗而定,從幾週到幾個月不等。
參考時間:
| 背景 | 預估時間 |
|---|---|
| 完全新手 | 3-6 個月 |
| 有開發經驗 | 1-3 個月 |
| 有資安基礎 | 2-4 週 |
| 資安專家 | 幾天到 1 週 |
影響因素:
- 每天投入的時間
- 是否看提示/解答
- 之前的技術背景
- 學習的深度(只解題 vs 理解原理)
建議:不要追求速度,重點是真正理解每個漏洞。
Q3:有官方解答嗎?
有,但建議謹慎使用。
官方資源:
- Pwning OWASP Juice Shop:官方攻略書
- GitHub Wiki:部分提示和解法
- YouTube:社群製作的攻略影片
使用建議:
- 先自己嘗試至少 30 分鐘
- 卡住時先看「提示」而非「解答」
- 看了解答要理解「為什麼」
- 嘗試用不同方法解同一題
- 完成後研究防護方式
學習效果比較:
- 自己解出來 → 印象最深、成就感最高
- 看提示後解出 → 還不錯
- 直接看解答 → 效果有限,容易忘記
真正的學習發生在卡關和思考的過程中。
結論
OWASP Juice Shop 是學習網站安全的最佳起點。免費、有趣、內容豐富。
為什麼要練 Juice Shop:
- 實戰導向,不是紙上談兵
- 涵蓋真實世界的漏洞類型
- 有明確的進度追蹤
- 社群活躍,資源豐富
學習建議:
- 先建立環境,立刻開始
- 從 1 星挑戰開始,建立信心
- 搭配 ZAP 學習工具使用
- 理解漏洞原理,不只是解題
- 完成後嘗試其他平台
下一步:
- 部署 Juice Shop 開始練習
- 加入 OWASP 社群交流
- 挑戰 Bug Bounty 計畫
- 考取資安相關證照
如果你開發的是 Mobile App 或 IoT 產品,也別忘了學習 OWASP Mobile 與 IoT 安全 的專屬風險。
資安學習是一條漫長的路。Juice Shop 是很好的第一步。祝你玩得愉快!
學完 Juice Shop 想檢測自己的網站?預約專業弱點掃描
相關文章
OWASP 是什麼?2025 完整指南:Top 10、ZAP 工具、安全標準一次搞懂
深入了解 OWASP 網站安全標準,涵蓋 Top 10 漏洞清單、ZAP 弱點掃描工具、API/LLM/Mobile 安全指南。免費資源與企業導入實務。
OWASPOWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護【2026 更新】
深入解析 OWASP API Top 10 安全漏洞,包含 BOLA、認證失效等十大 API 風險,以及防護措施與測試方法。含 2024-2025 年最新攻擊案例。
OWASPOWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析【2026 更新】
深入了解 OWASP Mobile Top 10(2024 最新版)與 IoT Top 10,涵蓋行動 App 與物聯網設備的安全漏洞、MASVS 標準、測試方法與防護指南。