
Dieses Repository zeigt, wie die Schwachstelle CVE-2021-4034 ausgenutzt wird.
Dieses Repository enthält den Quellcode zur Demonstration der Ausnutzung der Schwachstelle CVE-2021-4034, auch bekannt als PwnKit, die in pkexec (Teil des Polkit-Pakets) entdeckt wurde. Dieser Fehler ermöglicht eine lokale Privilegieneskalation auf Root durch die Verwendung bösartiger Umgebungsvariablen.
Dieser Code wird ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Er darf nicht auf Produktionssystemen oder ohne ausdrückliche Genehmigung verwendet werden. Die missbräuchliche Verwendung kann illegal sein und verstößt gegen die Nutzungsbedingungen des Autors.
Die Schwachstelle tritt auf, wenn pkexec ohne Argumente ausgeführt wird, d. h. argc == 0. In diesem Fall versucht pkexec, auf argv[1] zuzugreifen, ohne zu prüfen, ob argv[0] existiert, was dazu führt, dass es aus envp[0] liest. Dies ermöglicht dem Angreifer:
GCONV_PATH zu lesen und zu überschreiben..so-Bibliothek zu erzwingen, um Code als Root auszuführen.Der Exploit nutzt diese Bedingung aus, um eine schädliche Bibliothek zu laden, die eine Shell als Root öffnet.
cve-2021-4034.c: Quellcode des Exploits, der pkexec mit argv[] = {NULL} und modifizierten Umgebungsvariablen aufruft.pwnkit.c: Quellcode der schädlichen Bibliothek, die eine Shell als Root öffnet.gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034