Escalade de privilèges locale : setuid, permissions excessives et sessions graphiques
L'escalade de privilèges locale (LPE) est le processus par lequel un attaquant élève ses droits d'accès sur un système où il a déjà un pied. Elle intervient généralement après une compromission initiale (accès via une vulnérabilité web, un compte utilisateur compromis, un accès physique) et vise à obtenir les droits les plus élevés du système : root sur Linux, SYSTEM ou Administrateur local sur Windows.
Binaires setuid mal configurés
Le bit setuid permet à un exécutable de fonctionner avec les droits de son propriétaire (généralement root) plutôt que ceux de l'utilisateur qui le lance. C'est une fonctionnalité légitime utilisée par des commandes comme passwd ou sudo. Mais un binaire setuid personnalisé ou mal configuré peut être exploité pour exécuter des commandes en tant que root.
Recherche de binaires setuid exploitables
# Lister les binaires setuid
find / -perm -4000 -type f 2>/dev/null
# Exemples de binaires legítimes courants :
# /usr/bin/passwd, /usr/bin/sudo, /usr/bin/su
# Exemple d'exploitation si /usr/bin/find a le bit setuid :
find . -exec /bin/sh -p \; -quit
# -p préserve le contexte setuid -> shell root
# GTFOBins (gtfobins.github.io) référence les binaires exploitables selon leur contexte
Permissions sudo trop larges
sudo permet à des utilisateurs d'exécuter des commandes spécifiques en tant que root. Des configurations trop permissives créent des vecteurs d'escalade. Une entrée NOPASSWD: ALL donne les droits root complets sans mot de passe. Autoriser des éditeurs de texte (vim, nano) ou des interprètes (python, perl) via sudo permet d'exécuter des commandes arbitraires dans leur contexte.
Vérification et principe du moindre privilège pour sudo
# Voir les permissions sudo de l'utilisateur courant
sudo -l
# Configuration correcte dans /etc/sudoers :
# Autoriser uniquement les commandes nécessaires
john ALL=(root) NOPASSWD: /usr/bin/systemctl restart myservice
# À éviter :
john ALL=(ALL) NOPASSWD: ALL
john ALL=(root) NOPASSWD: /usr/bin/vim # vim peut spawner un shell
Admins locaux excessifs et comptes de service
La prolifération de comptes membres du groupe Administrateurs locaux est un risque courant en environnement Windows. Chaque compte administrateur local est un vecteur potentiel d'escalade. Les comptes de service qui tournent avec des droits d'administrateur local (ou SYSTEM) peuvent être exploités si le service est compromis.
Sessions graphiques non restreintes
Des sessions graphiques (RDP, VNC, X11) ouvertes par des utilisateurs privilégiés et non verrouillées représentent un risque physique et réseau. Un attaquant qui accède au serveur via une RCE peut chercher des sessions graphiques actives en mémoire. Des politiques de verrouillage automatique et de déconnexion des sessions inactives réduisent cette exposition.
Récapitulatif
- Auditer les binaires setuid : supprimer le bit setuid sur tout binaire qui n'en a pas besoin
- Principe du moindre privilège pour sudo : lister explicitement les commandes autorisées, éviter les éditeurs et interprètes
- Limiter les admins locaux : appliquer LAPS sur Windows pour avoir des mots de passe uniques par machine
- Politique de verrouillage des sessions : déconnecter automatiquement les sessions graphiques inactives
Pour aller plus loin
Une question après la lecture ?
Vous souhaitez évaluer la surface d'escalade de privilèges de vos systèmes ? Envoyez un message.
Ou réservez directement un cadrage de 30 minutes
Réserver un appel →