
Docker-Exploit
Dieses Repository stellt eine eigenständige, interaktive Docker-Umgebung bereit, um die „Dirty Pipe“-Privilegieneskalations-Schwachstelle sicher zu demonstrieren und zu analysieren. Es ist als pädagogisches Werkzeug für Sicherheitsexperten konzipiert, um die Mechanik eines kritischen Exploits auf Kernel-Ebene in einer kontrollierten Umgebung zu verstehen.
Dirty Pipe war eine kritische Schwachstelle, die im Linux-Kernel entdeckt wurde (betroffen sind Versionen ab 5.8). Sie erlaubte einem lokalen, nicht privilegierten Benutzer, Daten in beliebigen schreibgeschützten Dateien zu überschreiben.
Die Auswirkungen sind schwerwiegend: Durch das Überschreiben einer sensiblen Datei wie /etc/passwd oder einer SUID-Binärdatei konnte ein Angreifer seine Privilegien problemlos auf root ausweiten und die vollständige Kontrolle über das System erlangen. Diese Schwachstelle war besonders gefährlich, da sie die standardmäßigen Dateiberechtigungsprüfungen umging – eine grundlegende Sicherheitskontrolle in Linux.
Dieses Projekt nutzt Docker, um eine sichere, isolierte und absichtlich verwundbare Umgebung zu schaffen. So kann jeder den Exploit studieren, ohne sein Host-System zu gefährden.
Die wichtigsten Komponenten sind:
Dockerfile: Definiert die Blaupause für unseren verwundbaren Container. Er verwendet ein älteres Basis-Image (debian:bullseye-20210927-slim), von dem bekannt ist, dass es einen für Dirty Pipe anfälligen Kernel enthält, und automatisiert den Einrichtungsprozess.exploit.c: Der C-Code, der die Exploit-Logik implementiert, basierend auf dem ursprünglichen Proof-of-Concept von Max Kellermann.Makefile: Ein einfaches Makefile, um den C-Code innerhalb des Containers zu einer ausführbaren Binärdatei zu kompilieren.Diese Anleitung führt Sie durch den Aufbau der Umgebung und die Ausführung des Exploits.
Voraussetzungen: Sie müssen Docker auf Ihrem System installiert und aktiv haben.
Öffnen Sie Ihr Terminal und klonen Sie dieses Projekt.
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
Verwenden Sie den Befehl docker build, um das Container-Image zu erstellen. Das Dockerfile übernimmt alle Abhängigkeiten und kompiliert den Exploit-Code.
docker build -t dirty-pipe-demo .
Führen Sie nun den Container interaktiv aus. Das Flag --rm stellt sicher, dass der Container beim Beenden gelöscht wird, und -it gibt Ihnen eine interaktive Shell.
docker run --rm -it dirty-pipe-demo
Sie werden in eine Shell innerhalb des Containers als nicht privilegierter Benutzer (hacker@...:/$) versetzt.
Führen Sie nun den vorkompilierten Exploit aus:
# You are currently an unprivileged user.
# Your prompt looks like this: hacker@<container_id>:/$
#
# Now run the exploit...
./exploit
Erfolg! Der Exploit überschreibt eine SUID-Binärdatei, um Ihnen eine Root-Shell zu gewähren. Ihre Terminal-Eingabeaufforderung wechselt von $ zu #, was anzeigt, dass Sie jetzt Root-Rechte haben.
# The exploit has succeeded.
# Your prompt is now a root shell: # whoami
root
#
Dieses Projekt ist mehr als nur das Ausführen eines Skripts; es ist eine praktische Demonstration kritischer Sicherheitsprinzipien, die für meine Arbeit als Cloud-Sicherheitsingenieur relevant sind:
Dieses Projekt und sein Code sind ausschließlich für Bildungs- und Forschungszwecke bestimmt. Versuchen Sie nicht, diesen Exploit auf einem System einzusetzen, für das Sie keine ausdrückliche, autorisierte Genehmigung haben.