
PoC of CVE-2021-4034 (PwnKit) for personal training purposes.
Ce dépôt contient une preuve de concept pour CVE-2021-4034, également connue sous le nom de PwnKit. Il a été développé uniquement à des fins de formation personnelle et éducatives. Utilisez-le uniquement dans des environnements que vous possédez ou pour lesquels vous êtes explicitement autorisé à tester.
Pour construire l'exploit, vous avez besoin de :
pkexec est un utilitaire de Polkit qui permet à un utilisateur autorisé d'exécuter des programmes en tant qu'un autre utilisateur, généralement avec des privilèges administratifs, similaire à sudo. CVE-2021-4034 est une vulnérabilité de corruption mémoire affectant ce binaire. Le problème vient d'une gestion incorrecte des arguments lorsque argc == 0. Cela provoque une écriture hors limites qui permet à un attaquant de contrôler le premier pointeur de variable d'environnement en mémoire. Sous certaines conditions, cela permet à un utilisateur local non privilégié d'élever ses privilèges jusqu'à root. Plus de détails sont disponibles ici : https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
L'exploit final est entièrement autonome et ne nécessite aucune bibliothèque externe ni binaire supplémentaire.
Distribution : Ubuntu 20.04 LTS
Version du noyau : 5.4.0-42-generic
Version de Polkit : 0.105-26ubuntu1 (non corrigée)
Le shell inclus (shell.asm) est écrit en assembleur x86_64 pour Linux. Il est compilé sous forme d'objet partagé (.so) et intégré dans l'exploit.
Optionnellement, le shell peut être implémenté en C pour plus de portabilité entre les distributions, mais la version ASM est conservée à des fins d'apprentissage et pour pratiquer la programmation assembleur bas niveau.
Remarque : Cet exploit et ce shell ne sont compatibles qu'avec les environnements Linux x86_64. L'utilisation d'une architecture différente (par exemple ARM ou i386) ne fonctionnera pas.
Compilation :
make
Exécution :
./exploit
Nettoyage :
make clean
Cette vulnérabilité a été corrigée en janvier 2022.
Si vous exécutez une version non corrigée de policykit-1, votre système pourrait être vulnérable. Comme atténuation temporaire, vous pouvez supprimer le bit SUID de pkexec :
chmod -s /bin/pkexec