Docker release_agent cgroups escape
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Details, siehe den originalen Blogbeitrag. Dies ist nur eine Zusammenfassung:
Original PoC:
Der Proof of Concept (PoC) demonstriert eine Methode, um cgroups auszunutzen, indem eine release_agent
-Datei erstellt und deren Aufruf ausgelöst wird, um beliebige Befehle auf dem Container-Host auszuführen. Hier ist eine Aufschlüsselung der beteiligten Schritte:
Umgebung vorbereiten:
Ein Verzeichnis /tmp/cgrp
wird erstellt, um als Mount-Punkt für die cgroup zu dienen.
Der RDMA cgroup-Controller wird in dieses Verzeichnis gemountet. Im Falle des Fehlens des RDMA-Controllers wird empfohlen, den memory
cgroup-Controller als Alternative zu verwenden.
Richten Sie die Kind-Cgroup ein:
Eine Kind-Cgroup mit dem Namen "x" wird im gemounteten Cgroup-Verzeichnis erstellt.
Benachrichtigungen sind für die "x" Cgroup aktiviert, indem 1 in die notify_on_release-Datei geschrieben wird.
Release-Agent konfigurieren:
Der Pfad des Containers auf dem Host wird aus der Datei /etc/mtab abgerufen.
Die release_agent-Datei der cgroup wird dann so konfiguriert, dass sie ein Skript mit dem Namen /cmd ausführt, das sich am ermittelten Host-Pfad befindet.
Erstellen und Konfigurieren des /cmd-Skripts:
Das /cmd-Skript wird innerhalb des Containers erstellt und so konfiguriert, dass es ps aux ausführt und die Ausgabe in eine Datei namens /output im Container umleitet. Der vollständige Pfad von /output auf dem Host wird angegeben.
Triggern Sie den Angriff:
Ein Prozess wird innerhalb der "x" Kind-Cgroup gestartet und sofort beendet.
Dies löst den release_agent
(das /cmd-Skript) aus, der ps aux auf dem Host ausführt und die Ausgabe in /output innerhalb des Containers schreibt.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)