返回首頁OWASP

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

20 min 分鐘閱讀

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(找到計分板)

難度:⭐

目標:找到隱藏的計分板頁面

提示

  • 計分板是追蹤進度的地方
  • 它被「隱藏」了,但不是真的隱藏

解法思路

  1. 開啟瀏覽器開發者工具(F12)
  2. 查看 JavaScript 檔案
  3. 搜尋「score」相關的路由
  4. 或者直接猜 /score-board

挑戰:DOM XSS

難度:⭐

目標:執行 DOM-based XSS 攻擊

提示

  • 搜尋功能可能有問題
  • 試試在搜尋欄輸入特殊字元

解法思路

  1. 在搜尋欄輸入:<iframe src="javascript:alert('xss')">
  2. 觀察頁面反應

挑戰:Confidential Document(機密文件)

難度:⭐

目標:找到機密文件

提示

  • 網站可能有一些不該公開的檔案
  • 試著探索目錄結構

解法思路

  1. 瀏覽網站,找到「關於我們」等頁面
  2. 查看是否有連結指向文件
  3. 嘗試存取 /ftp 目錄
  4. 下載機密文件

3-4 星挑戰:進階

需要更多技術知識和創意。

挑戰:Login Admin(登入管理員帳號)

難度:⭐⭐

目標:以管理員身份登入

提示

  • SQL Injection 是老朋友了
  • 登入表單可能沒有好好處理輸入

解法思路

  1. 在登入頁面的 Email 欄位輸入:' OR 1=1--
  2. 密碼隨便填
  3. 點擊登入

這是經典的 SQL Injection。系統執行的查詢變成:

SELECT * FROM Users WHERE email='' OR 1=1--' AND password='xxx'

OR 1=1 永遠為真,-- 註解掉後面的密碼檢查。

挑戰:Forged Feedback(偽造回饋)

難度:⭐⭐⭐

目標:以其他使用者身份提交回饋

提示

  • 回饋表單有隱藏欄位
  • 可以用開發者工具或 Proxy 修改

解法思路

  1. 開啟回饋頁面
  2. 使用開發者工具找到 userId 隱藏欄位
  3. 修改成其他使用者的 ID
  4. 提交表單

這展示了「不要信任客戶端」的重要性。

挑戰:Basket Access(存取他人購物車)

難度:⭐⭐⭐

目標:看到其他使用者的購物車內容

提示

  • API 可能有存取控制問題
  • 試著修改請求中的 ID

解法思路

  1. 登入自己的帳號,進入購物車
  2. 觀察 API 請求,找到 /rest/basket/X
  3. 修改 X 為其他數字(如 1、2)
  4. 查看回應

這是 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 的安全性依賴於簽章
  • 某些情況下簽章可以被繞過

解法思路

  1. 取得現有的 JWT Token
  2. 解碼查看結構
  3. 研究 JWT 常見攻擊(如 alg: none
  4. 嘗試偽造 Token

挑戰:RCE(Remote Code Execution)

難度:⭐⭐⭐⭐⭐⭐

目標:在伺服器上執行任意程式碼

提示

  • 這是最嚴重的漏洞類型
  • 需要找到能執行程式碼的進入點

解法思路: 需要結合多個漏洞,找到可以注入並執行程式碼的地方。這類挑戰需要深厚的功底。


學習路線建議

根據你的背景,選擇適合的學習路線。

初學者路線(0 基礎)

目標:建立基本觀念,完成 1-2 星挑戰

學習步驟

  1. 先學習基本 Web 知識(HTML、HTTP、Cookie)
  2. 學會使用瀏覽器開發者工具
  3. 完成所有 1 星挑戰
  4. 閱讀每個漏洞的說明
  5. 挑戰 2 星題目

預計時間:2-4 週

推薦資源

  • MDN Web 文件
  • OWASP Top 10 說明文件
  • YouTube 教學影片

進階者路線(有開發經驗)

目標:理解常見漏洞原理,完成 3-4 星挑戰

學習步驟

  1. 快速完成 1-2 星熱身
  2. 學習使用 Burp Suite 或 OWASP ZAP
  3. 系統性地學習每種漏洞類型
  4. 完成 3-4 星挑戰
  5. 研究挑戰背後的原理

預計時間:4-8 週

推薦資源

  • PortSwigger Web Security Academy
  • OWASP Testing Guide
  • HackTheBox

專家路線(資安從業者)

目標:精通各種攻擊技術,完成 5-6 星挑戰

學習步驟

  1. 快速通關 1-4 星
  2. 深入研究高難度漏洞
  3. 嘗試不看提示解題
  4. 研究原始碼理解漏洞成因
  5. 挑戰在時間限制內完成

預計時間:持續精進

推薦資源

  • 實際 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 ShopWebGoat
風格遊戲化、自由探索教學式、按部就班
難度1-6 星廣泛偏基礎
技術棧Node.js + AngularJava
適合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

  1. 啟動 ZAP
  2. 設定瀏覽器 Proxy 指向 localhost:8080
  3. 瀏覽 Juice Shop 網站
  4. 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

練習建議

  1. 先手動嘗試:培養直覺
  2. 再用工具驗證:學習工具能找到什麼
  3. 比較差異:理解自動化工具的限制
  4. 研究原理:知道為什麼這樣攻擊會成功

常見問題 FAQ

Q1:Juice Shop 可以用於面試準備嗎?

可以,很有幫助。

Juice Shop 能幫你準備的面向:

技術面試

  • 能說出具體的漏洞利用經驗
  • 展示對 OWASP Top 10 的理解
  • 有實際的練習紀錄可以分享

實作測驗: 一些公司會給 CTF 風格的測驗。Juice Shop 的練習能讓你更熟悉這類題目。

準備建議

  1. 至少完成 50% 的挑戰
  2. 能清楚解釋每種漏洞的原理和防護方式
  3. 準備幾個印象深刻的挑戰當故事講
  4. 了解漏洞在真實世界的影響

Q2:完成所有挑戰需要多久?

視經驗而定,從幾週到幾個月不等。

參考時間

背景預估時間
完全新手3-6 個月
有開發經驗1-3 個月
有資安基礎2-4 週
資安專家幾天到 1 週

影響因素

  • 每天投入的時間
  • 是否看提示/解答
  • 之前的技術背景
  • 學習的深度(只解題 vs 理解原理)

建議:不要追求速度,重點是真正理解每個漏洞。

Q3:有官方解答嗎?

有,但建議謹慎使用。

官方資源

  • Pwning OWASP Juice Shop:官方攻略書
  • GitHub Wiki:部分提示和解法
  • YouTube:社群製作的攻略影片

使用建議

  1. 先自己嘗試至少 30 分鐘
  2. 卡住時先看「提示」而非「解答」
  3. 看了解答要理解「為什麼」
  4. 嘗試用不同方法解同一題
  5. 完成後研究防護方式

學習效果比較

  • 自己解出來 → 印象最深、成就感最高
  • 看提示後解出 → 還不錯
  • 直接看解答 → 效果有限,容易忘記

真正的學習發生在卡關和思考的過程中。


結論

OWASP Juice Shop 是學習網站安全的最佳起點。免費、有趣、內容豐富。

為什麼要練 Juice Shop

  • 實戰導向,不是紙上談兵
  • 涵蓋真實世界的漏洞類型
  • 有明確的進度追蹤
  • 社群活躍,資源豐富

學習建議

  1. 先建立環境,立刻開始
  2. 從 1 星挑戰開始,建立信心
  3. 搭配 ZAP 學習工具使用
  4. 理解漏洞原理,不只是解題
  5. 完成後嘗試其他平台

下一步

  • 部署 Juice Shop 開始練習
  • 加入 OWASP 社群交流
  • 挑戰 Bug Bounty 計畫
  • 考取資安相關證照

如果你開發的是 Mobile App 或 IoT 產品,也別忘了學習 OWASP Mobile 與 IoT 安全 的專屬風險。

資安學習是一條漫長的路。Juice Shop 是很好的第一步。祝你玩得愉快!

學完 Juice Shop 想檢測自己的網站?預約專業弱點掃描

需要專業的雲端建議?

無論您正在評估雲平台、優化現有架構,或尋找節費方案,我們都能提供協助

預約免費諮詢

相關文章