
OWASP Kubernetes Top 10 (2025) के लिए व्यावहारिक कैप्चर-द-फ्लैग लैब। 11 वास्तविक-विश्व क्लस्टर कमजोरियों का शोषण करें, फ्लैग कैप्चर करें, फिर फिक्स लागू करें और एक स्वचालित जांचकर्ता से सत्यापित करें। स्थानीय रूप से kind पर चलता है।
एक कैप्चर-द-फ्लैग जो OWASP Kubernetes Top 10 — 2025 पर आधारित है। आपको NimbusMart की रेड-टीम के लिए काम पर रखा गया है, जो एक काल्पनिक ई-कॉमर्स कंपनी है जिसका क्लस्टर इसकी सुरक्षा से तेजी से बढ़ा। दस चुनौतियाँ, प्रति OWASP जोखिम एक (साथ ही एक बोनस) — प्रत्येक कमज़ोरी का शोषण करें, फ़्लैग कैप्चर करें, फिर फिक्स लागू करें और चेकर से इसे साबित करें।
दुनिया की बाइबिल (कंपनी, सेवाएं, नेमस्पेस, फ़्लैग योजना) labs/NIMBUSMART.md में है।
सब कुछ स्थानीय रूप से kind पर चलता है। वास्तविक क्लस्टर पर कमज़ोर मैनिफेस्ट को कभी न चलाएं।
@hac01 द्वारा निर्मित।
यह कोई स्लाइड डेक नहीं है — यह एक कार्यशील, डिज़ाइन द्वारा कमज़ोर Kubernetes क्लस्टर है जिसमें उस पर हमला करने, ठीक करने और फिक्स को सत्यापित करने के लिए टूलिंग शामिल है। ग्यारह चुनौतियों में आप इन चीज़ों का व्यावहारिक अनुभव प्राप्त करते हैं:
hostPath माउंट, और नोड ब्रेकआउट (K01)।ClusterRoles, अत्यधिक-स्कोप किए गए ServiceAccounts, और कैसे एक चुराया गया टोकन हर सीक्रेट तक पहुँचता है (K02, K09)।NetworkPolicy लॉकडाउन (K05)।:latest इमेज जो प्रोड में भेजी गईं (बोनस)।प्रत्येक चुनौती के लिए आपको मिलता है:
शुरू करने से पहले इन्हें इंस्टॉल करें। सेटअप स्क्रिप्ट पहले चार की जाँच करती है और यदि कोई गायब है तो स्पष्ट संदेश के साथ तुरंत विफल हो जाती है।
| Tool | Why | Install |
|---|---|---|
| Docker | kind क्लस्टर चलाता है और इमेज बनाता है। चालू होना चाहिए। | Docker Desktop / Engine |
| kind | Docker में स्थानीय Kubernetes क्लस्टर। | brew install kind |
| kubectl | क्लस्टर से बात करें। | brew install kubectl |
| Go 1.21+ | चेकर बाइनरी बनाता और चलाता है। | brew install go |
| Node.js 18+ | केवल वेब ऐप को स्थानीय रूप से चलाने के लिए (make web)। एक-कमांड इन-क्लस्टर सेटअप के लिए आवश्यक नहीं है। | brew install node |
brewकमांड macOS के लिए हैं। Linux पर अपने पैकेज मैनेजर या लिंक किए गए अपस्ट्रीम निर्देशों का उपयोग करें।
वेब ऐप, एक ब्राउज़र-आधारित टर्मिनल, और चेकर सभी kind क्लस्टर के अंदर चल सकते हैं। एक कमांड सब कुछ शुरू करता है और URL प्रिंट करता है:
./setup.sh # or: make up
# - creates the kind cluster, builds and loads images, deploys, waits for ready
# - Web app: http://localhost:30090
# - Terminal: the 'Terminal' button in the web app
./setup.sh सही पोर्ट मैपिंग के साथ क्लस्टर बनाता (या पुनः बनाता) है, दो इमेज (nimbusmart-ctf-web, nimbusmart-ctf-terminal) बनाता है, उन्हें kind में लोड करता है, और deploy/ लागू करता है। पहले रन में बेस इमेज खिंचती हैं और इसमें लगभग 1-2 मिनट लगते हैं।
./setup.sh # fresh cluster + full platform (deletes any old 'owasp-labs' cluster)
./setup.sh --keep # reuse an existing 'owasp-labs' cluster if present
फिर http://localhost:30090 खोलें, एक चुनौती चुनें, और ब्राउज़र में Terminal बटन का उपयोग करके क्लस्टर चलाएँ।
टर्मिनल पॉड cluster-admin ServiceAccount के रूप में चलता है, इसलिए ब्राउज़र में टर्मिनल इसी क्लस्टर को चलाता है — वहीं kubectl apply -f labs/... और owasp-k8s-checker --check kNN चलाएँ।
चेतावनी: ब्राउज़र-आधारित टर्मिनल प्रभावी रूप से WebSocket पर cluster-admin है। यह केवल इसलिए सुरक्षित है क्योंकि यह आपके स्थानीय, डिस्पोज़ेबल kind क्लस्टर पर
localhostसे बंधा है। पोर्ट30080/30090/30091को कभी भी अविश्वसनीय नेटवर्क पर एक्सपोज़ न करें।
kind delete cluster --name owasp-labs # or: make cluster-down
.
├── setup.sh एक-कमांड बूटस्ट्रैप (क्लस्टर + इमेज + डिप्लॉय)
├── Makefile सुविधाजनक लक्ष्य — उन्हें सूचीबद्ध करने के लिए `make help` चलाएँ
├── web/ Next.js + React ऐप (सफेद/बैंगनी थीम) — UI
├── labs/ प्रति जोखिम वास्तविक K8s मैनिफेस्ट (vulnerable.yaml + fixed.yaml + README)
│ ├── NIMBUSMART.md विश्व बाइबिल: कंपनी, नेमस्पेस, फ़्लैग योजना
│ └── kind-cluster.yaml साझा स्थानीय क्लस्टर कॉन्फ़िग (पोर्ट मैपिंग)
├── deploy/ इन-क्लस्टर प्लेटफॉर्म मैनिफेस्ट (वेब + टर्मिनल + RBAC) + build.sh
├── terminal-server/ ब्राउज़र-आधारित टर्मिनल के लिए WebSocket बैकएंड
└── checker/ Go बाइनरी जो Top 10 के विरुद्ध क्लस्टर को मान्य करता है
उपयोगी make लक्ष्य (make help सभी दिखाता है):
| Target | What it does |
|---|---|
make up | एक बार में: क्लस्टर + इमेज + डिप्लॉय (setup.sh चलाता है) |
make web | वेब ऐप को डेव मोड में :3000 पर चलाएँ |
make cluster / make cluster-down | स्थानीय kind क्लस्टर बनाएँ / हटाएँ |
make scan | वर्तमान क्लस्टर के विरुद्ध प्रत्येक चेकर चलाएँ |
make check ID=k01 | एकल जाँच चलाएँ |
make clean-labs | सभी लैब संसाधन हटाएँ (चुनौतियों के बीच रीसेट) |
प्रत्येक चुनौती NimbusMart के क्लस्टर में एक वास्तविक कमज़ोरी है — एक लक्ष्य चुनें, उसका शोषण करें, फ़्लैग कैप्चर करें, फिर इसे पैच करें और चेकर से फिक्स साबित करें।
