Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-4034 — Dies ist meine einfache Implementierung eines Exploits für die PwnKit-Schwachstelle. | Kitploit
Tools/GitHubGitHub/nicoibarburu/cve-2021-4034
Privilege EscalationExploitationLernen & BildungBinary-Exploitation
GitHubnicoibarburu/cve-2021-4034

CVE-2021-4034

Dies ist meine einfache Implementierung eines Exploits für die PwnKit-Schwachstelle.

Repository anzeigen
5vor 24 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Konzeptnachweis (Proof of Concept): CVE-2021-4034 (PwnKit)

Hinweis: Dieses Repository und sein Inhalt sind Teil einer Abschlussarbeit (GrAL), die ausschließlich für didaktische Zwecke und akademische Forschung erstellt wurde.

Beschreibung

Dieses Repository enthält einen Konzeptnachweis (PoC - Proof of Concept) für die Schwachstelle CVE-2021-4034 (auch bekannt als PwnKit). Diese Speicherkorruptions-Schwachstelle betrifft das pkexec-Komponente von Polkit auf Linux-Systemen. Wenn pkexec mit einer leeren Argumentliste (argc == 0) ausgeführt wird, können Umgebungsvariablen manipuliert werden, um das Laden einer beliebigen gemeinsam genutzten Bibliothek zu erzwingen und so eine lokale Privilegienerweiterung zu erreichen.

Exploit-Phasen (Umgebungsanalyse)

Im Folgenden werden die Schritte beschrieben, die zur Vorbereitung der Ausführungsumgebung für die Ausnutzung des Fehlers erforderlich sind. Dieser Prozess beschreibt, wie der Speicher-Lese-/Schreibfehler in pkexec ausgenutzt wird:

1. Vorbereitung der Umgebung (gconv-Struktur)

Dieser Exploit missbraucht die Art und Weise, wie GLib beim Versuch, eine Fehlermeldung auszugeben, die Zeichenkonvertierung verwaltet. Dazu besteht der erste Schritt darin, eine bestimmte Verzeichnisstruktur zu erstellen, die für GLib als lokales Repository für GCONV-Konvertierungsmodule dient.

2. Manipulation von Umgebungsvariablen

Der Schlüssel zur Schwachstelle ist das Injizieren der Umgebungsvariable GCONV_PATH, indem der durch den Zustand argc == 0 in pkexec verursachte Out-of-Bounds-Schreibzugriff ausgenutzt wird. Auf diese Weise wird das Programm gezwungen, einen anomalen Zeichensatz zu verwenden, was GLib signalisiert, dass die Zeichenkonvertierungsmodule in dem im vorherigen Schritt erstellten kontrollierten Verzeichnis gesucht werden müssen.

3. Erstellen einer bösartigen gemeinsam genutzten Bibliothek (.so)

Um unseren Code auszuführen, muss eine gemeinsam genutzte Bibliothek (Shared Object oder .so) kompiliert werden. Wenn pkexec versucht, einen Zeichensatz zu verarbeiten, den es nicht finden kann, lädt es diese Bibliothek aus unserem gefälschten gconv-Verzeichnis. Da pkexec eine Binärdatei mit gesetztem SUID-Bit ist (wird als root ausgeführt), erhält unser Code beim Laden dieser Bibliothek root-Privilegien und übernimmt die vollständige Kontrolle über das System (z. B. durch Öffnen einer Root-Shell).

4. Konfiguration der Datei gconv-modules

Schließlich muss in diesem lokalen Verzeichnis eine Konfigurationsdatei namens gconv-modules erstellt werden. Diese Datei fungiert als Index: Sie teilt GLib mit, welche konkrete Bibliothek (.so) für die Konvertierung des angeforderten spezifischen Zeichensatzes geladen werden muss. Diese Datei verbindet die von pkexec angeforderte Konvertierung mit der in Schritt 3 erstellten gemeinsam genutzten Bibliothek.

Kompilierung und Bereinigung

Das Projekt enthält ein Makefile, um die Kompilierung der C-Binärdatei und die Bereinigung der Umgebung zu automatisieren.

  • Um das Projekt zu kompilieren: $ make

  • Um die erzeugten Dateien (temporäre Dateien, Ordner und Binärdateien) zu bereinigen: $ make clean

Tool herunterladen