
Exploit pour la vulnérabilité CVE-2021-25741 de Kubernetes permettant le montage du système de fichiers hôte dans les pods via une condition de course, avec scripts de déploiement et détails techniques.
C'est un exploit pour la vulnérabilité CVE-2021-25741. Cette vulnérabilité permet de monter le système de fichiers du nœud à l'intérieur d'un nouveau POD avec des privilèges de lecture-écriture.
Vous pouvez en savoir plus sur la vulnérabilité ici :
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
Je ne suis pas l'auteur de cette vulnérabilité, j'ai simplement créé un exploit.
Merci à @russtone et @maximusfox pour leur aide dans le développement de l'exploit.
Versions vulnérables du kubelet :
Il suffit d'exécuter run.sh et d'attendre :) L'exploitation prendra un certain temps (pour moi, c'était 10 à 20 minutes) car elle repose sur une condition de course.
chmod +x run.sh; ./run.sh

Lorsque vous recevez le message « Success », vous pouvez vous attacher au POD et trouver le système de fichiers du nœud dans le répertoire /mnt/data.
Pour vous attacher, vous pouvez utiliser la commande suivante :
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

L'exploit comporte 2 parties :
Fichier YAML avec la configuration du pod qui exploite la vulnérabilité. En raison de la condition de course, cela ne fonctionne pas à chaque fois, vous devez donc le faire dans une boucle.
Script qui déploie pod.yaml, vérifie le résultat et le redéploie si nécessaire.
Comme binaire renameat2 avec l'option RENAME_EXCHANGE, j'ai utilisé ce code : https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Vous pouvez le compiler vous-même et le remplacer dans pod.yaml si vous le souhaitez :
gcc renameat2.c -o renameat2
base64 renameat2
Solutions :
Solutions :