Dirty Pipe Deployment
Für diese Challenge möchtest du die schreibgeschützte Datei "cat.txt" mit dem CVE-2022-0847-Exploit überschreiben
Es gibt viele Möglichkeiten, dies mit dem Exploit zu tun
Abhängigkeiten
- Linux-Kernel Version 5.8 oder neuer (anfällig)
- gcc (GNU Compiler Collection) zum Kompilieren des Exploit-Codes
Erstmalige Einrichtung
- Richte eine anfällige Umgebung ein:
- Für Linux-Benutzer:
- Verwende eine Linux-Distribution mit Kernel-Version 5.8 oder neuer, aber älter als die gepatchten Versionen:
- Zu den gepatchten Versionen gehören 5.16.11, 5.15.25 und 5.10.102.
- Überprüfe die Kernel-Version auf deinem System mit:
uname -r
- Wenn dein Kernel bereits gepatcht ist, musst du möglicherweise ein Downgrade durchführen oder eine andere Linux-Installation verwenden, um den Kriterien für die Anfälligkeit zu entsprechen.
- Für Windows-Benutzer:
- Installiere eine virtuelle Maschine:
- Lade eine virtuelle Maschine wie Oracle VM VirtualBox oder VMware herunter und installiere sie.
- Lade eine anfällige Linux-Distribution herunter:
- Besuche das Kali-Linux-Archiv, um eine ältere Version von Kali Linux herunterzuladen.
- Empfohlene Versionen sind alle Releases mit einem 5.8 - 5.15 Kernel (z. B. Kali 2021.1).
- Alternativ funktionieren auch andere Linux-Distributionen mit passenden Kernel-Versionen (z. B. ältere Versionen von Ubuntu oder Debian).
- Richte die VM ein:
- Erstelle eine neue virtuelle Maschine in VirtualBox:
- Weise mindestens 2 GB RAM und 10 GB Festplattenspeicher zu.
- Verwende die heruntergeladene ISO-Datei, um die Linux-Distribution zu installieren.
- Bestätige nach der Installation die Kernel-Version mit:
uname -r
- Installiere erforderliche Tools:
- Stelle nach der Einrichtung der Umgebung sicher, dass die folgenden Tools installiert sind:
- gcc: Erforderlich zum Kompilieren des Exploit-Codes.
- make: Zum Erstellen von Projekten, falls benötigt.
- Aktualisiere deinen Paketmanager und installiere die Tools:
sudo apt update
sudo apt install gcc make -y
Starten der Challenge
- Start:
Stelle sicher, dass du die Kernel-Version überprüfst!
Verwende diesen GitHub-Link(https://github.com/basharkey/CVE-2022-0847-dirty-pipe-checker.git)
Überprüfe, dass die Datei cat.txt schreibgeschützt ist
Die Einschränkungen sind:
Der Angreifer muss über Leserechte verfügen (da er eine Seite per splice() in eine Pipe einfügen muss)
Der Offset darf nicht auf einer Seitengrenze liegen (da mindestens ein Byte dieser Seite in die Pipe gespleißt worden sein muss)
Der Schreibvorgang darf keine Seitengrenze überschreiten (da für den Rest ein neuer anonymer Puffer erstellt würde)
Die Datei kann nicht in der Größe verändert werden (da die Pipe eine eigene Seitenfüllverwaltung besitzt und dem Page-Cache nicht mitteilt, wie viele Daten angefügt wurden)
- Setze den Exploit ein:
-
Erstelle eine Pipe.
-
Fülle die Pipe mit beliebigen Daten (um das PIPE_BUF_FLAG_CAN_MERGE-Flag in allen Ring-Einträgen zu setzen).
-
Entleere die Pipe (wobei das Flag in allen struct pipe_buffer-Instanzen auf dem struct pipe_inode_info-Ring gesetzt bleibt).
-
Spleiße Daten aus der Zieldatei (mit O_RDONLY geöffnet) knapp vor dem Ziel-Offset in die Pipe.
-
Schreibe beliebige Daten in die Pipe; diese Daten überschreiben die gecachte Dateiseite, anstatt einen neuen anonymen struct pipe_buffer zu erstellen, da PIPE_BUF_FLAG_CAN_MERGE gesetzt ist.
-
Überschreibe die Datei cat.txt und ändere
I'm a cat
1444
zu
I'm a dog
2025
-
Verwende check_cat.sh, um zu prüfen, ob es funktioniert oder nicht
chmod +x check_cat.sh
./check_cat.sh
Regenerieren der Challenge
Verwende Folgendes
chmod +x cat_generate.sh
./cat_generate.sh
Veröffentlichen der Challenge
Hinweise befinden sich in hints.txt