除了 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:
- Prompt Injection
- Tool Poisoning
- Excessive Permissions
- Rug Pull
- Tool Shadowing
- Indirect Prompt Injection
- Token Theft
- Malicious Code Execution
- Remote Access
- 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,而是真的理解:
- 系統信錯了什麼
- 權限邊界在哪裡破掉
- 資料如何跨越不同元件
- 幾個低風險問題怎麼串成高風險結果
- 修補到底應該放在哪一層
這種「看起來像產品,只是被故意做壞」的靶場,是我也想收藏的鑽石靶機。
Member discussion