
Sicheres, kontrolliertes Mock-System, das CVE-2021-4034 (PwnKit) simuliert, mit Out-of-Bounds-Lese-/Schreibzugriff, Umgebungsvariablen-Injektion und Kernel-Abwehrerkennung für die praktische Schulung zur Ausnutzung.
Dieses Projekt ist ein Mock-System, das das Kernverhalten der CVE-2021-4034 (Out-of-Bounds Read/Write) Schwachstelle im Linux-pkexec-Daemon nachbildet. Es simuliert sicher einen Angriff auf den Umgebungsvariablen-Speicherbereich und die Injektion bösartiger Payloads in einer kontrollierten Umgebung, ohne tatsächliche SUID-Privilegieneskalation.
Insbesondere erkennt dieses Mock-System den Abwehrmechanismus des modernen Linux-Kernels bei execve (der bei Übergabe eines leeren Arrays erzwingt, dass ein leerer String eingefügt wird, wodurch argc=1 wird) und korrigiert die Offsets, um die vergangene anfällige Speicherumgebung erfolgreich nachzuahmen.
cve-2021-4034-mock/
├── README.md # Projektdokumentation und Ausführungshinweise
├── src/
│ ├── mock_pkexec.c # Quellcode des Zieldaemons ohne Argumentprüfung
│ └── exploit.c # Quellcode des Angreifers, der Payloads über execve übergibt
└── bin/ # Verzeichnis für kompilierte Binärdateien (wird beim Build erstellt)
Wechseln Sie im Terminal in das Stammverzeichnis des Projekts und kompilieren Sie den Quellcode, indem Sie die folgenden Befehle nacheinander eingeben.
# 1. Erstellen Sie das bin-Verzeichnis für die ausführbaren Dateien
mkdir -p bin
# 2. Kompilieren des Zielprogramms (Mock-System)
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. Kompilieren des Exploit-Skripts
gcc -Wall -Wextra -o bin/exploit src/exploit.c
Bei erfolgreicher Kompilierung werden die ausführbaren Dateien mock_pkexec und exploit im bin/-Verzeichnis erstellt.
Wenn das Programm mit normalen Argumenten ausgeführt wird, wird gezeigt, dass die Berechtigungsprüfung aufgrund der Abwehrlogik fehlschlägt oder das Programm sicher beendet wird.
./bin/mock_pkexec test_argument
[OK]-Meldung.Führen Sie das Exploit-Skript aus, um die Schwachstelle auszulösen, indem ein argc=0-Payload (NULL-Array) erzwungen wird.
./bin/exploit
argc auf 1 erzwingt, und korrigiert dynamisch den Speicherreferenzindex.envp-Bereich jenseits der Grenzen des argv-Arrays überschritten.GCONV_PATH) wird erfolgreich im Systemspeicher überschrieben, und die rote Warnung [FATAL] ENVIRONMENT CORRUPTION DETECTED! wird ausgegeben.Um die kompilierten Binärdateien nach dem Test zu löschen, verwenden Sie den folgenden Befehl.
rm -rf bin/