
Laboratorio pratico capture-the-flag per OWASP Kubernetes Top 10 (2025). Sfrutta 11 vulnerabilità reali del cluster, cattura le flag, quindi applica le correzioni e verifica con un controllore automatico. Viene eseguito localmente su kind.
Una caccia alla bandiera (capture-the-flag) basata sul OWASP Kubernetes Top 10 — 2025. Sei stato assunto per fare red-teaming su NimbusMart, un'azienda fittizia di e-commerce il cui cluster è cresciuto più velocemente della sua sicurezza. Dieci sfide, una per rischio OWASP (più un bonus) — sfrutta ogni debolezza, cattura la bandiera, poi applica la correzione e verificala con il checker.
La bibbia del mondo (azienda, servizi, namespace, schema delle bandiere) si trova in labs/NIMBUSMART.md.
Tutto gira localmente su kind. Non eseguire mai i manifest vulnerabili su un cluster reale.
Creato da @hac01.
Questo non è un set di diapositive — è un cluster Kubernetes funzionante e vulnerabile di progettazione, più gli strumenti per attaccarlo, correggerlo e verificare la correzione. Attraverso le undici sfide acquisisci esperienza pratica con:
hostPath e fuga dal nodo (K01).ClusterRole con wildcard, ServiceAccounts con ambito eccessivo, e come un singolo token rubato può accedere a tutti i segreti (K02, K09).NetworkPolicy (K05).:latest non fidate e mutabili spedite in produzione (bonus).Per ogni sfida ottieni:
Installa questi prima di iniziare. Lo script di setup controlla i primi quattro e fallisce rapidamente con un messaggio chiaro se mancano.
| Strumento | Perché | Installazione |
|---|---|---|
| Docker | Esegue il cluster kind e costruisce le immagini. Deve essere in esecuzione. | Docker Desktop / Engine |
| kind | Cluster Kubernetes locale in Docker. | brew install kind |
| kubectl | Parla con il cluster. | brew install kubectl |
| Go 1.21+ | Costruisce ed esegue il binario del checker. | brew install go |
| Node.js 18+ | Solo per eseguire l'app web localmente (make web). Non necessario per il setup in-cluster con un comando. | brew install node |
I comandi
brewsono per macOS. Su Linux usa il tuo gestore di pacchetti o le istruzioni upstream collegate.
L'app web, un terminale nel browser e il checker possono essere eseguiti all'interno del cluster kind. Un comando avvia tutto e stampa l'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 (ri)crea il cluster con i giusti mapping di porta, costruisce le due immagini (nimbusmart-ctf-web, nimbusmart-ctf-terminal), le carica in kind e applica deploy/. Al primo avvio scarica le immagini di base e impiega circa 1-2 minuti.
./setup.sh # fresh cluster + full platform (deletes any old 'owasp-labs' cluster)
./setup.sh --keep # reuse an existing 'owasp-labs' cluster if present
Poi apri http://localhost:30090, scegli una sfida e usa il pulsante Terminale nel browser per guidare il cluster.
Il pod terminale viene eseguito come ServiceAccount cluster-admin, quindi il terminale nel browser guida esattamente questo cluster — esegui kubectl apply -f labs/... e owasp-k8s-checker --check kNN direttamente lì.
Avvertenza: il terminale nel browser è di fatto cluster-admin su un WebSocket. È sicuro solo perché è legato al tuo cluster kind locale e usa e getta su
localhost. Non esporre mai le porte30080/30090/30091a una rete non fidata.
kind delete cluster --name owasp-labs # or: make cluster-down
.
├── setup.sh Bootstrap con un comando (cluster + immagini + deploy)
├── Makefile Target di comodità — esegui `make help` per elencarli
├── web/ App Next.js + React (tema bianco/viola) — l'interfaccia utente
├── labs/ Manifest K8s reali per rischio (vulnerable.yaml + fixed.yaml + README)
│ ├── NIMBUSMART.md Bibbia del mondo: azienda, namespace, schema delle bandiere
│ └── kind-cluster.yaml Configurazione cluster locale condivisa (mapping di porta)
├── deploy/ Manifest della piattaforma in-cluster (web + terminal + RBAC) + build.sh
├── terminal-server/ Backend WebSocket per il terminale nel browser
└── checker/ Binario Go che convalida un cluster rispetto alla Top 10
Target make utili (make help mostra tutti):
| Target | Cosa fa |
|---|---|
make up | Tutto in un colpo: cluster + immagini + deploy (esegue setup.sh) |
make web | Esegue l'app web in modalità sviluppo su :3000 |
make cluster / make cluster-down | Crea / elimina il cluster kind locale |
make scan | Esegue tutti i checker sul cluster corrente |
make check ID=k01 | Esegue un singolo check |
make clean-labs | Elimina tutte le risorse del lab (reset tra le sfide) |
Ogni sfida è una vera debolezza nel cluster di NimbusMart — scegli un bersaglio, sfruttalo, cattura la bandiera, poi correggilo e dimostra la correzione con il checker.
