10 min read

除了 Juice Shop:Broken Crystals 與我最近收藏的鑽石靶機

除了 Juice Shop:Broken Crystals 與我最近收藏的鑽石靶機

前陣子我想整理一下近年新出的資安靶機,本來以為會挖到很多沒看過的新東西,結果常見推薦翻來覆去還是:

  • OWASP Juice Shop
  • PortSwigger Web Security Academy
  • crAPI
  • CloudGoat
  • GOAD
  • pwn.college

這些當然都很好,但總覺得少了什麼,直到我提到 Broken Crystals,才發現問題在哪裡:

大部分推薦清單都很會列「大專案」,卻很容易漏掉個人或小團隊製作的高品質小靶機。

有些靶場沒有 OWASP Logo,GitHub Star 也沒有高到嚇人,卻跟一樣有學習價值跟最重要的好玩!

我把這類作品叫做:

鑽石靶機

它們不一定大,但漏洞設計漂亮、技術棧現代,而且打完真的會留下東西。

Broken Crystals:我心中的答案

專案:

NeuraLegion/brokencrystals

我最近連續寫了幾篇 Broken Crystals 實戰筆記,包括:

  • 從一個 Query 參數一路打到 Root Reverse Shell
  • eval 類 SSJI 取得 RCE
  • XXE 可以讀檔,卻不一定能順利打 SSRF
  • 從未認證 MCP Guest Session 一路提權到 Admin RCE

玩下去之後,我越來越確定它就是我在找的那種靶場。

Broken Crystals 不是把漏洞一頁一頁排列出來,而是真的做了一套產品:

  • React 前端
  • Node.js 後端
  • PostgreSQL
  • REST API
  • OpenAPI/Swagger
  • GraphQL
  • JWT
  • 郵件功能
  • MCP JSON-RPC Endpoint

裡面的漏洞也不是只有 SQLi 和 XSS:

  • JWT 驗證問題
  • SQL Injection
  • IDOR/授權錯誤
  • XPath Injection
  • XXE
  • SSRF
  • LFI
  • Prototype Pollution
  • Server-side JavaScript Injection
  • GraphQL 攻擊面
  • MCP Session 與角色權限
  • SSTI/RCE
  • 敏感設定洩漏

尤其近期加入 MCP 後,Guest Session、一般使用者、Admin Tool 與 Render 功能可以串成很完整的攻擊鏈。

這種感覺很像:

作者不是做了很多漏洞題,而是做了一個每層信任邊界都壞掉的真實產品。

唯一要注意的是,README 寫得太詳細,第一次玩最好不要往下翻太多,不然漏洞名稱、Endpoint,甚至部分 Payload 都會被劇透。

Damn Vulnerable RESTaurant:小型 API 攻擊鏈

專案:

theowni/Damn-Vulnerable-RESTaurant-API-Game

RESTaurant 是一套以 FastAPI 和 PostgreSQL 製作的脆弱 API。

它有三種使用方式:

  • 開發者找出並修補漏洞
  • Ethical Hacker 手動利用
  • Security Engineer 拿 SAST、DAST 等工具測試

我喜歡它的地方,是作者沒有把所有漏洞拆成互不相關的 Endpoint,攻擊者會從低權限 API 使用者開始,沿著一條設計好的路線逐步升到 Root。

環境裡也有:

  • Swagger
  • Redoc
  • Docker
  • FastAPI
  • PostgreSQL
  • Developer Fix Mode

整體規模不大,但主題集中。

它很適合在玩過 crAPI 後拿來做一輪完整黑箱,或反過來直接看 FastAPI 原始碼做白箱審計。

OAuth Labs:不是只有 redirect_uri

專案:

cyllective/oauth-labs

我最近也開始寫 OAuth Labs 的實戰系列。

這套 Lab 很符合「小而精」的標準,因為它不是在某個普通網站裡塞一顆「Login with OAuth」按鈕,而是把整套 OAuth 流程真的做出來:

  • Authorization Server
  • Client Application
  • Victim Simulator
  • Token 與 Claim
  • Admin Resource
  • Black-box Mode
  • White-box Mode

每一關原則上只有一個預期漏洞,目標則都是想辦法取得 Admin User 的資源。

目前場景會碰到:

  • 不穩定或可控制的身分 Claim
  • redirect_uri 驗證問題
  • JWT Signature 驗證錯誤
  • 不安全的 JKU 處理

OAuth 漏洞真正麻煩的地方,不是單一 Payload,而是流程中有很多角色:

Resource Owner
Authorization Server
Client
Redirect URI
Access Token
ID Token
Resource Server

只要其中一邊對另一邊多信任了一點,就可能出事。

這套 Lab 很適合把那些看完文章「好像懂了」的 OAuth 攻擊,真的走一次。

AspGoat:終於有比較現代的 .NET 靶場

專案:

Soham7-dev/AspGoat

ASP.NET 的脆弱應用不是沒有,但不少都停留在較舊的 Framework 與程式風格。

AspGoat 使用較現代的 ASP.NET Core MVC,包含:

  • SQL Injection
  • XSS
  • CSRF
  • IDOR
  • XXE
  • SSRF
  • 不安全反序列化
  • Cache Poisoning
  • SSTI
  • Prototype Pollution

它也會對照安全與不安全的寫法,適合拿來補 .NET 白箱審計。

近期版本還加入部分 AI/LLM 類型的場景,例如 Prompt Injection、Excessive Agency 與 Insecure Output Handling。

如果平常看最多的是 PHP、Node.js 和 Python,這台可以拿來換換腦袋。

DVGA:專門練 GraphQL

專案:

dolevf/Damn-Vulnerable-GraphQL-Application

DVGA 的主題非常單純:GraphQL Security

環境涵蓋:

  • Query
  • Mutation
  • Subscription
  • Introspection
  • Resolver
  • Authorization
  • Injection
  • Resource Exhaustion
  • Information Disclosure

它還有 Beginner 與 Expert Mode。

GraphQL 的問題常常不在 GraphQL 本身,而是開發者覺得:

前端不會送這種 Query,所以後端不用擋。

或者只在最外層檢查權限,Resolver 往下走後就開始放飛。

如果只玩一般 REST API,很容易漏掉 GraphQL 那種巢狀物件、Resolver 與欄位級授權的思考方式。

VAmPI:小、乾淨,適合測工具

專案:

erev0s/VAmPI

VAmPI 是 Flask 製作的脆弱 REST API,規模比 crAPI 小很多。

它支援:

  • OpenAPI
  • Swagger
  • Postman Collection
  • Token Authentication
  • Vulnerable/Secure Mode

這台不一定是最有故事性的靶機,但非常適合拿來:

  • 測 API Scanner
  • 跑 Fuzzer
  • 做 OpenAPI 自動化
  • 驗證 BOLA/IDOR 測試流程
  • 比較修補前後差異

想寫自己的 API Security Tool,又不想每次都啟動一整套微服務,可以先拿它開刀。

Otto Support:目前很對味的 MCP 靶場

專案:

BishopFox/otto-support

Otto Support 是 Bishop Fox 做的 Vulnerable MCP Customer Support Server。

它不是十個互不相關的 Prompt Injection 小題,而是一套完整的客服系統:

  • 單一 Go Binary
  • 19 個 MCP Tools
  • 4 層角色
  • Payment Gateway
  • Customer API
  • Metadata Service
  • Session Signer
  • SQLite

一開始是未認證狀態,接著要從 Tools 和回傳資料中找 Credential,一路升到:

Unauthenticated
→ User
→ Support
→ Admin

而且可以直接搭配:

  • Claude Code
  • Codex CLI
  • Cursor

這個設計比「想辦法騙 Chatbot 說出 System Prompt」有趣很多。

真正要測的是:

  • Tool 權限是不是過大
  • 不同角色能不能碰到不該碰的 Tool
  • Credential 會不會經由 Tool Output 外洩
  • Agent 會不會把低信任資料帶入高權限動作
  • 多個低風險功能能不能串成完整提權鏈

如果最近想研究 MCP,我會把 Otto Support 排在非常前面。

Vulnerable MCP Servers Lab:白箱審計很好用

專案:

appsecco/vulnerable-mcp-servers-lab

Appsecco 這套比較像 MCP Vulnerability Collection。

每個場景是一個相對獨立的 MCP Server,內容包含:

  • Indirect Prompt Injection
  • 不安全的 eval
  • Tool Poisoning
  • Malicious Tool Description
  • Path Traversal
  • Code Execution
  • Secrets/PII 洩漏
  • 過期套件與供應鏈問題

它不像 Otto Support 那麼產品化,但很適合逐一打開原始碼,直接做:

Tool Definition
→ Input
→ Handler
→ Sink
→ Agent 行為

對想從傳統 Web Code Audit 轉進 AI Red Team 的人,這套比較容易建立基本手感。

DVMCP:十關式 MCP 教材

專案:

harishsg993010/damn-vulnerable-MCP-server

Damn Vulnerable MCP Server,簡稱 DVMCP,共有十個漸進式 Challenge:

  1. Prompt Injection
  2. Tool Poisoning
  3. Excessive Permissions
  4. Rug Pull
  5. Tool Shadowing
  6. Indirect Prompt Injection
  7. Token Theft
  8. Malicious Code Execution
  9. Remote Access
  10. Multi-vector Attack

它比較不像真實產品,而像一套分類清楚的教材。

所以我會這樣分:

想先理解 MCP 攻擊分類:DVMCP
想做單一漏洞白箱:Vulnerable MCP Servers Lab
想打一條完整產品攻擊鏈:Otto Support

AIGoat 與 LLMGoat

這兩套名字很像,但方向不完全一樣。

AIGoat

專案:

AISecurityConsortium/AIGoat

AIGoat 是一套本機運行的 AI 電商靶場,預設透過 Ollama 跑模型。

它目前提供:

  • 17 個 Attack Labs
  • 9 個 CTF Challenges
  • 3 層 Progressive Defense
  • Prompt Injection
  • System Prompt Leakage
  • RAG Poisoning
  • Supply Chain Backdoor
  • Excessive Agency
  • Resource Abuse

我覺得它有價值的地方,是可以切換不同防禦層級。

不是只告訴你「這裡可以 Prompt Injection」,而是讓你看:

完全沒防禦
→ 加入輸入檢查
→ 加入意圖分類
→ 加入輸出過濾
→ 加入 Guardrails

然後再測原本的攻擊還能不能用。

LLMGoat

專案:

SECFORCE/LLMGoat

LLMGoat 有十個 Challenge,分別對應 OWASP LLM Top 10。

預設使用本機 Gemma 2 模型,題目有些需要傳統資安知識,有些只需要自然語言操控。

相較之下:

LLMGoat:比較像循序課程
AIGoat:比較像完整 AI Security Playground

兩套都能本機跑,但模型本身會吃 RAM 和 CPU,不像一般 Flask 靶機那麼輕。

OWASP FinBot CTF:Agentic AI 版 Juice Shop

專案:

OWASP FinBot CTF

FinBot CTF 把自己定位成:

Juice Shop for Agentic AI

它模擬一套金融與供應商管理平台,裡面的 Agent 真的能使用 Tools 與 MCP,而不是只能聊天。

攻擊面包含:

  • Goal Manipulation
  • Memory Poisoning
  • Policy Bypass
  • Tool Poisoning
  • Data Exfiltration
  • Agent Misbehavior
  • RCE

它還有公開 Live System,想試的話不一定要先架本機環境。

FinBot 的規模比本文前面那些小靶場大,但它確實代表近期靶場的另一個方向:

不再只測模型會不會說錯話,而是測模型拿到真實工具權限後,會不會做錯事。

那些大型經典,還是值得玩

強調小型精品,不代表大型靶場就過時了。

Juice Shop v20

Juice Shop 在 2026 年進入 v20,商店和 Coding Challenge UI 都大幅改版,也加入:

  • Chatbot Prompt Injection
  • Greedy Chatbot Manipulation
  • AI Debugging
  • System Prompt 相關場景

以前玩過,不代表現在不用再玩。

PortSwigger Web Security Academy

對 Web Bug Bounty 而言,PortSwigger 仍然是最穩的主線。

近年的內容已經延伸到:

  • API Testing
  • Web Cache Deception
  • NoSQL Injection
  • OAuth
  • JWT
  • Prototype Pollution
  • Web LLM Attacks
  • LLM Excessive Agency

而且題目品質和解釋通常都很穩。

crAPI

想練現代 API、微服務與 Business Logic,crAPI 仍然很有代表性。

GOAD

想進企業內網、Kerberos、ADCS、Delegation 與 SCCM,GOAD 仍然是大工程級的必玩項目。

缺點就是重。

不是執行一條 Docker Command 就結束的那種重。

pwn.college

想從 Web 跨進 Binary Exploitation,先去 pwn.college,通常比直接跳 ExploitGym 合理。

VulnerableApp

適合拿來測 SAST、DAST、Scanner 與修補後的 Regression,不一定是最有故事性的 CTF,但作為工具測試環境很完整。

最後

大型平台很容易被找到,也通常有比較完整的教材和社群。

但我現在也喜歡這些:

  • 一個人或小團隊製作
  • Docker 一開就能玩
  • 技術棧夠現代
  • 漏洞不是硬塞進去
  • 可以先黑箱、再白箱
  • 幾個問題能串成完整 Kill Chain

Broken Crystals、OAuth Labs、RESTaurant 和 Otto Support,就是這一類。

它們未必有幾百道題目,卻會讓你在打完之後,不只記住一條 Payload,而是真的理解:

  • 系統信錯了什麼
  • 權限邊界在哪裡破掉
  • 資料如何跨越不同元件
  • 幾個低風險問題怎麼串成高風險結果
  • 修補到底應該放在哪一層

這種「看起來像產品,只是被故意做壞」的靶場,是我也想收藏的鑽石靶機。

專案清單

Web/API

MCP/LLM

Cloud/AD/Pwn

大型綜合平台