Special Permissions
Les permissions Set User ID upon Execution (setuid) et Set Group ID (setgid) sont des mĂ©canismes Unix qui permettent Ă un binaire dâĂȘtre exĂ©cutĂ© avec les privilĂšges du propriĂ©taire (setuid) ou du groupe (setgid) du fichier, plutĂŽt quâavec les privilĂšges de lâutilisateur appelant. Lorsquâun binaire possĂšde le bit setuid, cela peut permettre Ă un utilisateur dâexĂ©cuter ce programme avec des permissions Ă©levĂ©es (souvent root). Le bit setuid est reprĂ©sentĂ© par un s dans les permissions.
đ ĂnumĂ©ration des binaires setuid
Pour repérer des binaires setuid appartenant à root, on peut utiliser la commande suivante :
find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/nullIl est possible de vouloir analyser ces binaires : dĂ©compiler, faire de la rĂ©tro-ingĂ©nierie, ou chercher des vulnĂ©rabilitĂ©s logiques (buffer overflow, format string, erreurs de validation dâarguments, etc.). Si une vulnĂ©rabilitĂ© est trouvĂ©e dans un binaire setuid, elle peut ĂȘtre exploitĂ©e pour escalader les privilĂšges.
đ§ Exemples dâapplications setuid courantes
Certains programmes systĂšme et utilitaires installĂ©s par dĂ©faut possĂšdent parfois le bit setuid. PlutĂŽt que lister des exemples concrets (sorties), on retient que des programmes comme mount, su, ping, passwd, sudo, pkexec, etc. apparaissent souvent dans les inventaires â mais la prĂ©sence exacte dĂ©pend du systĂšme et de la distribution.
đ§© Setgid (Set Group ID)
La permission setgid permet dâexĂ©cuter un binaire avec les droits du groupe propriĂ©taire du fichier. Elle peut ĂȘtre utile pour accĂ©der Ă des ressources restreintes au groupe. LâĂ©numĂ©ration des fichiers setgid (ou combinĂ©s setuid+setgid) se fait avec :
find / -uid 0 -perm -6000 -type f 2>/dev/nullUn autre exemple dâĂ©numĂ©ration ciblĂ©e :
find / -user root -perm -6000 -exec ls -ldb {} \; 2>/dev/nullđ ïž Pourquoi câest intĂ©ressant pour un attaquant
Surface dâattaque Ă©levĂ©e : les binaires setuid root exĂ©cutent du code avec privilĂšges Ă©levĂ©s et toute vulnĂ©rabilitĂ© peut conduire Ă une escalade.
FonctionnalitĂ©s intĂ©grĂ©es : certains programmes offrent des options/funcÂtions permettant dâexĂ©cuter des commandes, dâĂ©diter des fichiers, dâappeler des interprĂ©teurs (ex. via
system(),popen(), plugins, hooks, scripts prĂ©-exĂ©cution).PossibilitĂ©s dâabus : si le binaire accepte des entrĂ©es contrĂŽlĂ©es (noms de fichiers, variables dâenvironnement, arguments) sans validation stricte, elles peuvent ĂȘtre utilisĂ©es pour exĂ©cuter du code arbitraire.
Souvent, lâapproche consiste Ă :
récupérer le binaire setuid,
lâanalyser (strings, ltrace/strace en environnement sĂ©curisĂ©, reversing statique/dynamique),
identifier un vecteur (injection dâargument, Ă©criture de fichier, chargement de librairie),
développer un exploit local pour obtenir un shell ou une action privilégiée.
đ GTFOBins â catalogue dâabus connus
Le projet GTFOBins est une liste organisĂ©e de binaires et de techniques permettant dâabuser de fonctionnalitĂ©s lĂ©gitimes pour :
casser des environnements restreints,
élever des privilÚges,
ouvrir des shells,
transférer des fichiers.
Il est trĂšs utile de sây rĂ©fĂ©rer lors dâun test dâintrusion pour identifier rapidement si un binaire prĂ©sent sur la machine offre une mĂ©thode dâabus.
Exemple pratique (commande utile Ă connaĂźtre) :
Cette ligne montre comment apt-get (via une option Pre-Invoke) peut, dans certains contextes, exĂ©cuter /bin/sh avant lâaction principale â si lâexĂ©cution se fait avec des privilĂšges Ă©levĂ©s, cela ouvre un shell privilĂ©giĂ©.
đ§ Bonnes pratiques pour les audits
Lister systĂ©matiquement les binaires setuid/setgid dĂšs lâaccĂšs Ă une machine (commande
findci-dessus).Ne pas exécuter directement les binaires setuid sur une machine de production pour du reversing : effectuer le reversing dans un environnement isolé/copied pour éviter tout dommage.
Chercher des appels Ă
system(),popen(),dlopen()ou Ă des charges dynamiques de bibliothĂšques â ce sont des points dâinjection potentiels.VĂ©rifier les variables dâenvironnement influant lâexĂ©cution (PATH, LD_PRELOAD, LD_LIBRARY_PATH, etc.) â certaines distributions empĂȘchent lâusage de
LD_PRELOADpour les binaires setuid, mais pas toutes.Consulter GTFOBins pour des méthodes spécifiques à chaque binaire connu.
đĄïž Mesures d'attĂ©nuation pour les administrateurs
RĂ©duire le nombre de binaires setuid : nâappliquer le bit setuid que lorsque câest strictement nĂ©cessaire.
Appliquer les correctifs et mises Ă jour sur les packages systĂšme dĂšs que possible.
Restreindre le PATH et valider les variables dâenvironnement au dĂ©marrage des services.
Utiliser des mĂ©canismes de confinement (AppArmor, SELinux, namespaces, conteneurs) pour limiter lâimpact dâun binaire compromis.
Auditer réguliÚrement les permissions des fichiers et garder un inventaire des binaires sensibles.
đ Ressources utiles
SSH to 10.129.205.42 (ACADEMY-LPE-NIX02) with user "htb-student" and password "Academy_LLPE!"
Find a file with the setuid bit set that was not shown in the section command output (full path to the binary).
à l'aide du cours ci-dessus nous utilisons la commande mise à disposition pour lister les différents programmes fonctionnants avec le setuid :
En comparant avec le retour fait dans le cours, nous pouvons observer que le chemin présent dans notre commande non présent dans le cours est le suivant :
Find a file with the setgid bit set that was not shown in the section command output (full path to the binary).
à l'aide du cours ci-dessus nous utilisons la commande mise à disposition pour lister les différents programmes fonctionnants avec le setgid :
En comparant avec le retour fait dans le cours, nous pouvons observer que le chemin présent dans notre commande non présent dans le cours est le suivant :
Last updated