
Praxisorientiertes Capture-the-Flag-Labor für die OWASP Kubernetes Top 10 (2025). Nutzen Sie 11 reale Cluster-Schwachstellen aus, erbeuten Sie Flaggen, wenden Sie dann Korrekturen an und überprüfen Sie diese mit einem automatischen Prüfer. Läuft lokal auf kind.
Ein Capture-the-Flag, aufbauend auf dem OWASP Kubernetes Top 10 — 2025. Du wurdest angeheuert, um NimbusMart zu red-teamen, ein fiktives E-Commerce-Unternehmen, dessen Cluster schneller wuchs als seine Sicherheit. Zehn Herausforderungen, eine pro OWASP-Risiko (plus ein Bonus) – nutze jede Schwachstelle aus, erobere die Flagge, wende dann die Korrektur an und beweise sie mit dem Checker.
Die Weltbibel (Unternehmen, Dienste, Namespaces, Flag-Schema) befindet sich in labs/NIMBUSMART.md.
Alles läuft lokal auf kind. Führe die verwundbaren Manifeste niemals gegen einen echten Cluster aus.
Erstellt von @hac01.
Dies ist keine Folienpräsentation – es ist ein funktionierender, von Natur aus verwundbarer Kubernetes-Cluster plus die Werkzeuge, um ihn anzugreifen, zu reparieren und die Reparatur zu überprüfen. In den elf Herausforderungen bekommst du praktische Erfahrung mit:
hostPath-Mounts und Node-
Breakout (K01).ClusterRoles, übermäßig weitreichende ServiceAccounts,
und wie ein gestohlener Token jedes Secret erreicht (K02, K09).NetworkPolicy-Abschottung (K05).:latest-Images, die in Produktion ausgeliefert werden (Bonus).Für jede Herausforderung erhältst du:
Installiere diese, bevor du beginnst. Das Setup-Skript prüft die ersten vier und bricht schnell mit einer klaren Meldung ab, falls etwas fehlt.
| Tool | Warum | Installieren |
|---|---|---|
| Docker | Führt den kind-Cluster aus und baut Images. Muss laufen. | Docker Desktop / Engine |
| kind | Lokaler Kubernetes-Cluster in Docker. | brew install kind |
| kubectl | Sprich mit dem Cluster. | brew install kubectl |
| Go 1.21+ | Baut und führt das Checker-Binary aus. | brew install go |
| Node.js 18+ | Nur zum lokalen Ausführen der Web-App (make web). Nicht für das Ein-Befehl-In-Cluster-Setup erforderlich. | brew install node |
brew-Befehle sind für macOS. Unter Linux verwende deinen Paketmanager oder die verlinkten Originalanleitungen.
Die Web-App, ein In-Browser-Terminal und der Checker können alle innerhalb des kind- Clusters laufen. Ein Befehl startet alles und gibt die URL aus:
./setup.sh # oder: make up
# - erstellt den kind-Cluster, baut Images und lädt sie, stellt bereit, wartet auf Bereitschaft
# - Web-App: http://localhost:30090
# - Terminal: der 'Terminal'-Button in der Web-App
./setup.sh erstellt den Cluster (neu) mit den richtigen Portzuordnungen, baut die beiden
Images (nimbusmart-ctf-web, nimbusmart-ctf-terminal), lädt sie in kind und
wendet deploy/ an. Erster Durchlauf zieht Basis-Images und dauert ~1-2 Minuten.
./setup.sh # frischer Cluster + vollständige Plattform (löscht alten 'owasp-labs'-Cluster)
./setup.sh --keep # vorhandenen 'owasp-labs'-Cluster wiederverwenden, falls vorhanden
Öffne dann http://localhost:30090, wähle eine Herausforderung und verwende den Terminal- Button im Browser, um den Cluster zu steuern.
Der Terminal-Pod läuft als cluster-admin-ServiceAccount, so dass das Terminal im
Browser genau diesen Cluster steuert – führe kubectl apply -f labs/... und
owasp-k8s-checker --check kNN direkt dort aus.
Warnung: Das In-Browser-Terminal hat effektiv cluster-admin über ein WebSocket. Es ist nur sicher, weil es an deinen lokalen, wegwerfbaren kind-Cluster auf
localhostgebunden ist. Setze die Ports30080/30090/30091niemals einem unsicheren Netzwerk aus.
kind delete cluster --name owasp-labs # oder: make cluster-down
.
├── setup.sh Ein-Befehl-Bootstrap (Cluster + Images + Deploy)
├── Makefile Komfortziele – führe `make help` aus, um sie anzuzeigen
├── web/ Next.js + React-App (weiß/lila Thema) – die UI
├── labs/ Echte K8s-Manifeste pro Risiko (vulnerable.yaml + fixed.yaml + README)
│ ├── NIMBUSMART.md Weltbibel: Unternehmen, Namespaces, Flag-Schema
│ └── kind-cluster.yaml Gemeinsame lokale Cluster-Konfiguration (Portzuordnungen)
├── deploy/ Manifeste für In-Cluster-Plattform (Web + Terminal + RBAC) + build.sh
├── terminal-server/ WebSocket-Backend für das In-Browser-Terminal
└── checker/ Go-Binary, das einen Cluster gegen die Top 10 validiert
Nützliche make-Ziele (make help zeigt alle):
| Ziel | Was es tut |
|---|---|
make up | Ein Schuss: Cluster + Images + Deploy (führt setup.sh aus) |
make web | Starte die Web-App im Dev-Modus auf :3000 |
make cluster / make cluster-down | Lokalen kind-Cluster erstellen / löschen |
make scan | Führe jeden Checker gegen den aktuellen Cluster aus |
make check ID=k01 | Führe einen einzelnen Check aus |
make clean-labs | Lösche alle Lab-Ressourcen (zurücksetzen zwischen Herausforderungen) |
Jede Herausforderung ist eine echte Schwachstelle in NimbusMart's Cluster – wähle ein Ziel, nutze es aus, erobere die Flagge, patche sie dann und beweise die Korrektur mit dem Checker.
