12 façons d’énumérer Linux pour l’escalade des privilèges
L’énumération est l’une des étapes clés des tests de pénétration. C’est la première chose à faire lorsque vous avez compromis un système cible en tant que testeur de pénétration. Bien qu’il existe une pléthore d’outils permettant d’automatiser ce processus, il est toujours recommandé de parcourir et de revérifier manuellement le système à la recherche de vecteurs potentiels d’escalade des privilèges.
Examinons les différentes façons d’énumérer manuellement un système Linux à la recherche d’une escalade de privilèges.
Pourquoi l’énumération est-elle importante pour l’escalade des privilèges ?
L’escalade des privilèges, également connue sous le nom d’escalade des privilèges (EOP), est un élément essentiel des tests de pénétration et de leur méthodologie. Comme son nom l’indique, il s’agit d’une étape au cours de laquelle vous tentez d’élever vos privilèges jusqu’à l’administrateur ou, dans les systèmes Linux, jusqu’à l’utilisateur root.
Pour obtenir les privilèges de l’utilisateur root, il faut d’abord trouver une vulnérabilité dans le système. C’est là que l’énumération entre en jeu. Bien qu’il existe des outils permettant d’automatiser l’énumération, le plus souvent, une énumération manuelle et approfondie permet de découvrir des configurations erronées et d’autres vulnérabilités qui ne sont pas détectées par les outils.
1. L’énumération du système
La première chose à faire après avoir pris pied est de se renseigner sur le système auquel vous avez accès. Cela vous aidera à optimiser vos charges utiles en fonction de l’architecture et à garantir une compatibilité maximale avec le système cible.
Par exemple, si vous avez un exploit 64 bits, vous devrez le modifier si votre système cible ne prend en charge que des logiciels 32 bits, car il existe une différence entre les systèmes 32 bits et 64 bits.
De plus, connaître la version du noyau vous aidera à rechercher des exploits sur le web, au cas où vous découvririez que la version est obsolète et vulnérable à un exploit public. Voici quelques commandes qui vous aideront à obtenir des informations sur le système :
Pour obtenir des informations sur le système, telles que la version du noyau, la version du système d’exploitation, etc :
Si vous souhaitez en savoir plus sur l’architecture du processeur, utilisez la commande lscpu :
2. Énumération des processus
Les processus sont des programmes en cours d’exécution. Connaître la liste complète des processus d’un système Linux, associée à quelques autres tactiques d’énumération mentionnées dans ce guide, vous permettra d’identifier les processus potentiellement vulnérables et d’en tirer parti pour élever vos privilèges.
Par exemple, si vous trouvez un processus s’exécutant avec les privilèges de root, vous pourriez être en mesure d’y injecter du code arbitraire, ce qui pourrait conduire à une escalade réussie des privilèges.
Vous pouvez utiliser la commande ps avec l’option aux pour dresser la liste de tous les processus du système :
3. Énumération des utilisateurs et des groupes
L’énumération des utilisateurs et des groupes est importante pour déterminer qui a accès à quelle partie du système. En sachant cela, vous pouvez délimiter efficacement vos cibles et élaborer une stratégie d’attaque efficace. En outre, vous êtes en mesure de créer des mappages appropriés et de comprendre en profondeur les rôles et les privilèges de chaque compte.
La visibilité des comptes privilégiés vous permet d’essayer des combinaisons connues de nom d’utilisateur et de mot de passe. Vous pouvez imprimer le contenu du fichier /etc/passwd et /etc/group pour accéder à la liste des utilisateurs. Vous pouvez également utiliser la commande getent.
Pour obtenir la liste des utilisateurs sous Linux :
Pour obtenir la liste des groupes :
4. Recherche de fichiers sensibles
Les fichiers sensibles tels que /etc/passwd et /etc/shadow peuvent potentiellement laisser échapper beaucoup d’informations. A partir de /etc/shadow vous pouvez trouver les hachages des mots de passe des utilisateurs et tenter de les craquer avec un outil de cassage de hachages comme Hashcat ou John the Ripper.
Il y a aussi la fonction /etc/sudoers qui, si vous pouvez le modifier d’une manière ou d’une autre, permettra de modifier les autorisations sudo pour les utilisateurs et les groupes.
5. Vérification des autorisations sudo
La bonne gestion des permissions sudo est cruciale pour la sécurité d’un système Linux. L’analyse des permissions sudo vous donnera un aperçu des vecteurs potentiels d’escalade des privilèges. S’il y a des erreurs de configuration, par exemple si certains programmes ont un niveau de privilège alarmant, vous pourriez être en mesure de les exploiter pour obtenir l’accès à la racine.
Ce n’est qu’un exemple des nombreuses voies d’attaque qui peuvent s’ouvrir une fois que vous avez compris les autorisations sudo dans le système Linux. Un autre exemple serait l’utilisation abusive du mécanisme de préchargement de bibliothèque LD_PRELOAD, que vous pouvez énumérer en examinant les autorisations sudo.
6. Recherche d’exploits dans le noyau Linux
Les exploits du noyau Linux sont mortels parce qu’ils attaquent le cœur du système d’exploitation fonctionnant sur le système compromis. Avec une faille critique du noyau, vous pourrez faire à peu près n’importe quoi avec le système.
Pour trouver des exploits du noyau, il faut d’abord connaître la version du noyau, puis, à l’aide d’un outil comme searchsploit ou de Google Dorks, trouver un exploit approprié qui affecte la version exacte du noyau fonctionnant sur le système.
7. Exploitation des binaires SUID
SUID est l’abréviation de Set Owner User ID upon execution. Il s’agit d’un type spécial d’autorisation de fichier qui, lorsqu’elle est définie, exécute un programme avec les privilèges de son propriétaire.
Si un programme a été créé par l’utilisateur root et que le bit SUID a été défini pour lui, le programme, lorsqu’il est exécuté, possède les privilèges de l’utilisateur root. Comment peut-on abuser du SUID ? C’est très simple.
Enumerate for all binaries with SUID bit set, scourate through the list, find a binary for which you have write access, and edit its source to add your payload. Vous pouvez utiliser la commande find pour rechercher les binaires SUID et rediriger la sortie standard vers /dev/null:
8. Détournement de bibliothèques
Il peut arriver que des programmes s’exécutant sur le système utilisent des bibliothèques qui ne sont pas protégées en écriture. Dans un tel scénario, vous pouvez facilement écraser la bibliothèque utilisée et prendre le contrôle des fonctionnalités du programme.
Si vous avez de la chance et que vous trouvez un programme s’exécutant en tant que root, vous pouvez détourner la bibliothèque dont il dépend et potentiellement obtenir un accès shell root.
9. Recherche et détournement des variables d’environnement
Les variables d’environnement sont des types particuliers de variables qui, dans une certaine mesure, définissent le fonctionnement du système et des programmes. Une variable d’environnement importante est la variable PATH.
Elle stocke l’emplacement de tous les binaires exécutables dans le système. Vous pouvez manipuler la variable PATH et l’associer à d’autres vulnérabilités telles que le détournement de bibliothèque pour obtenir un accès root.
Par exemple, supposons qu’il y ait un exécutable avec un bit SUID activé. Pour fonctionner correctement, il appelle un binaire sans définir son chemin d’accès complet.
Vous pouvez tirer parti de cette situation en créant une version dupliquée et malveillante du binaire, et en mettant à jour la variable PATH avec l’emplacement du binaire malveillant, de sorte que lorsque l’exécutable SUID est exécuté, votre binaire malveillant sera exécuté en tant que root, et vous serez en mesure de créer un shell root.
De plus, il y a de bonnes chances de trouver des clés secrètes et des mots de passe en examinant simplement les variables d’environnement. Vous pouvez afficher toutes les variables d’environnement à l’aide de la commande env :
10. Trouver des artefacts dans l’historique de Bash
Souvent, l’historique de l’utilisateur actuel n’est pas supprimé. Vous pouvez abuser de cette situation pour accéder à des informations sensibles ou réexécuter des commandes antérieures avec des paramètres modifiés.
Bien que cela ne conduise probablement pas à une escalade des privilèges, c’est une bonne source de fuites d’informations pour vous donner une idée de ce que l’utilisateur fait habituellement sur le système.
11. Détournement de tâches Cron vulnérables
Les tâches Cron sont une fonctionnalité intégrée et très utile de Linux. Si vous avez migré de Windows, un travail cron peut être directement comparé à une tâche planifiée sur Windows.
Il s’exécute périodiquement et exécute des commandes. L’heure à laquelle il s’exécute et les commandes qu’il exécute sont prédéfinies par l’utilisateur. Il peut arriver que certaines tâches cron soient vulnérables à des attaques telles que l’injection de caractères génériques ou qu’elles soient accessibles en écriture par l’utilisateur sous lequel vous vous êtes connecté.
Vous pouvez abuser de ces vulnérabilités pour obtenir un accès racine au système. Pour exploiter une tâche cron, vous devez d’abord trouver une tâche vulnérable. Voici les commandes permettant d’obtenir la liste des tâches cron en cours d’exécution et d’autres données pertinentes :
12. Liste des paquets périmés
Lorsque vous avez accès à un système, l’une des premières mesures à prendre est de dresser la liste de tous les logiciels installés et de comparer les versions installées à la version la plus récente.
Il est possible qu’un paquetage obscur soit installé, qui n’est peut-être pas beaucoup utilisé, mais qui est extrêmement vulnérable à une attaque par élévation de privilèges. Vous pouvez alors exploiter ce paquetage pour obtenir l’accès à la racine.
Utilisez la commande dpkg avec l’option -l pour dresser la liste des paquets installés sur les systèmes basés sur Debian et Ubuntu :
Pour les systèmes RHEL/CentOS/Fedora, utilisez cette commande pour lister les paquets installés :
Vous savez maintenant comment énumérer manuellement Linux pour l’escalade des privilèges
L’escalade des privilèges dépend uniquement de l’énumération. Plus vous avez accès à des informations, mieux vous pourrez planifier vos stratégies d’attaque.
Une énumération efficace est essentielle pour prendre pied, escalader les privilèges et persister avec succès sur le système cible. Bien qu’il soit utile de faire les choses manuellement, certaines tâches peuvent être confiées à des outils automatisés afin de gagner du temps et d’économiser des efforts. Vous devez connaître les meilleurs outils de sécurité pour rechercher les vulnérabilités d’un système.
S’abonner à notre lettre d’information