
Exploit für die Kubernetes-Schwachstelle CVE-2021-25741, die das Mounten des Host-Dateisystems in Pods über eine Race Condition ermöglicht, mit Bereitstellungsskripten und technischen Details.
Dies ist ein Exploit für die Schwachstelle CVE-2021-25741. Diese Schwachstelle ermöglicht es, das Node-Dateisystem innerhalb eines neuen PODs mit Lese-Schreib-Berechtigungen zu mounten.
Weitere Informationen über die Schwachstelle findest du hier:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
Ich bin nicht der Autor dieser Schwachstelle und habe lediglich einen Exploit erstellt.
Dank an @russtone und @maximusfox für die Hilfe bei der Entwicklung des Exploits.
Verwundbare Versionen des kubelet:
Führe einfach run.sh aus und warte :) Die Ausnutzung wird einige Zeit in Anspruch nehmen (bei mir waren es 10-20 Minuten), da sie auf einer Race Condition basiert.
chmod +x run.sh; ./run.sh

Wenn du die Meldung "Success" erhältst, kannst du dich mit dem POD verbinden und das Node-Dateisystem im Verzeichnis /mnt/data finden.
Zum Verbinden kannst du den folgenden Befehl verwenden:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

Der Exploit besteht aus 2 Teilen:
YAML-Datei mit der POD-Konfiguration, die die Schwachstelle ausnutzt. Aufgrund der Race Condition funktioniert es nicht jedes Mal, daher solltest du es in einer Schleife ausführen.
Skript, das pod.yaml bereitstellt, das Ergebnis prüft und es bei Bedarf erneut bereitstellt.
Als renameat2-Binary mit der Option RENAME_EXCHANGE habe ich diesen Code verwendet: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Du kannst es selbst kompilieren und in pod.yaml ersetzen, wenn du möchtest:
gcc renameat2.c -o renameat2
base64 renameat2
Lösungen:
Lösungen: