Vous souhaitez obtenir un accès superutilisateur à un système Linux? Voici quelques-unes des meilleures façons d'énumérer une machine Linux.
L'énumération est l'une des étapes clés des tests d'intrusion. C'est la première chose à faire lorsque vous avez compromis un système cible en tant que testeur d'intrusion. Bien qu'il existe une pléthore d'outils pour automatiser ce processus, il est toujours recommandé de parcourir manuellement et de revérifier le système à la recherche de vecteurs potentiels d'escalade de privilèges.
Examinons les différentes façons d'énumérer manuellement un système Linux pour l'élévation des privilèges.
Pourquoi l'énumération est-elle importante pour l'escalade des privilèges?
L'escalade de privilèges, également connue sous le nom d'escalade de privilèges (EOP), est un élément central des tests d'intrusion et de la méthodologie des tests d'intrusion. Comme son nom l'indique, c'est une étape où vous essayez d'élever vos privilèges à l'administrateur ou, dans les systèmes Linux, à l'utilisateur root.
Pour obtenir les privilèges root, vous devez 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 pour automatiser l'énumération, le plus souvent, une énumération manuelle et approfondie peut révéler des erreurs de configuration et d'autres vulnérabilités qui ne sont pas détectées par les outils.
1. Énumération du système
La première chose que vous devez faire après avoir pris pied est de vous renseigner sur le système auquel vous avez établi un accès. Cela vous aidera à optimiser vos charges utiles pour correspondre à l'architecture et assurer une compatibilité maximale de vos charges utiles 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 les 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 constateriez que la version est obsolète et vulnérable à un exploit public. Voici quelques commandes qui vous aideront à récupérer les informations système :
Pour trouver des informations système telles que la version du noyau, la version du système d'exploitation, etc., saisissez :
chat /etc/cpuinfo
uname -a
Si vous souhaitez en savoir plus sur l'architecture du CPU, utilisez la commande lscpu :
lscpu
2. Énumération de processus
Les processus sont des programmes en cours d'exécution. Connaître la liste complète des processus sur un système Linux, couplé à quelques autres tactiques d'énumération mentionnés dans ce guide vous aideront à identifier les processus potentiellement vulnérables et à les exploiter pour élever privilège.
Par exemple, si vous trouvez un processus en cours d'exécution avec des privilèges root, vous pourrez peut-être y injecter du code arbitraire, ce qui pourrait conduire à une élévation réussie des privilèges.
Vous pouvez utiliser la commande ps avec le aux flags pour lister tous les processus du système :
ps aux
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. Savoir cela vous permet de cibler efficacement vos cibles et de construire une stratégie d'attaque efficace. De plus, 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 /etc/passwd et /etc/group fichiers pour accéder à la liste des utilisateurs. Alternativement, vous pouvez également utiliser la commande getent.
Pour obtenir la liste des utilisateurs sous Linux:
obtenir le mot de passe
Pour obtenir la liste des groupes :
groupe d'agents
4. Recherche de fichiers sensibles
Les fichiers sensibles tels que /etc/passwd et /etc/shadow peut potentiellement divulguer beaucoup d'informations. Depuis /etc/shadow vous pouvez trouver les hachages du mot de passe des utilisateurs et tenter de les déchiffrer avec un outil de piratage comme Hashcat ou John the Ripper.
Il y a aussi le /etc/sudoers fichier, 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
Une bonne gestion des autorisations sudo est cruciale pour la sécurité d'un système Linux. L'analyse des autorisations sudo vous donnera un aperçu des vecteurs potentiels d'élévation des privilèges. S'il y a des erreurs de configuration comme certains programmes ont un niveau de privilège alarmant, vous pourrez peut-être les exploiter pour obtenir un accès root.
Ceci n'est qu'un exemple des nombreuses voies d'attaque qui peuvent s'ouvrir une fois que vous avez la clarté des autorisations sudo dans le système Linux. Un autre exemple serait d'abuser du mécanisme de préchargement de la bibliothèque LD_PRELOAD, que vous pouvez énumérer en consultant les autorisations sudo.
sudo-l
6. Trouver des exploits du noyau Linux
Les exploits du noyau Linux sont mortels car ils attaquent le cœur du système d'exploitation exécuté 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 les exploits du noyau, découvrez d'abord la version du noyau, puis, en utilisant un outil comme searchsploit ou, en utilisant Google Dork, trouvez un exploit approprié affectant la version exacte du noyau exécuté sur le système.
7. Exploitation des binaires SUID
SUID est l'abréviation de Set Owner User ID lors de l'exécution. Il s'agit d'un type spécial d'autorisation de fichier qui, lorsqu'il est défini, 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 celui-ci, le programme, lorsqu'il est exécuté, posséderait les privilèges root. Comment SUID peut-il être abusé? C'est simple.
Énumérez tous les binaires avec le bit SUID défini, parcourez la liste, trouvez un binaire pour lequel vous avez un accès en écriture et modifiez sa source pour ajouter votre charge utile. Vous pouvez utiliser la commande find pour rechercher des binaires SUID et rediriger la sortie standard vers /dev/null:
trouver / -perm -4000 2>/dev/null
8. Piratage de bibliothèques
Parfois, il peut y avoir des programmes en cours d'exécution sur le système qui 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 exécuté en tant que root, vous pouvez détourner la bibliothèque dont il dépend et potentiellement obtenir un accès root au shell.
9. Enquête et piratage des variables d'environnement
Les variables d'environnement sont des types spéciaux 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.
Il stocke l'emplacement de tous les binaires exécutables dans le système. Vous pouvez manipuler la variable PATH et l'enchaîner avec d'autres vulnérabilités comme le détournement de bibliothèque pour obtenir un accès root.
Par exemple, supposons qu'il y ait un exécutable avec un jeu de bits SUID. Pour fonctionner correctement, il appelle un binaire sans définir son chemin complet.
Vous pouvez en profiter en créant une version malveillante dupliquée du binaire et en mettant à jour la variable PATH avec l'emplacement de le binaire malveillant afin que lorsque l'exécutable SUID est exécuté, votre binaire malveillant sera exécuté en tant que root et vous pourrez générer un shell root.
De plus, il y a aussi de bonnes chances de trouver des clés secrètes et des mots de passe en parcourant simplement les variables d'environnement. Vous pouvez imprimer toutes les variables d'environnement à l'aide de la commande env :
env
10. Trouver des artefacts dans l'historique de Bash
Souvent, l'historique de l'utilisateur actuel ne sera pas supprimé. Vous pouvez en abuser pour potentiellement accéder à des informations sensibles ou réexécuter des commandes précédentes avec des paramètres modifiés.
Bien que cela ne conduise probablement pas à une élévation des privilèges, c'est une bonne source de fuites d'informations pour vous donner une idée claire 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 ingénieuse de Linux. Si vous avez migré depuis Windows, une tâche cron peut être directement comparée à une tâche planifiée sous Windows.
Il s'exécute périodiquement et exécute des commandes. L'heure à laquelle il s'exécutera et les commandes qu'il exécutera sont prédéfinies par l'utilisateur. Parfois, vous pouvez trouver quelques tâches cron vulnérables aux attaques telles que l'injection de caractères génériques ou accessibles en écriture par l'utilisateur sous lequel vous vous êtes connecté.
Vous pouvez exploiter ces vulnérabilités pour obtenir un accès root au système. Pour exploiter une tâche cron, vous devez d'abord en trouver une vulnérable. Voici les commandes pour répertorier les tâches cron en cours d'exécution et d'autres données pertinentes :
ls /etc/cron.d/
crontab -l -u
12. Liste des packages obsolètes
Lorsque vous avez établi l'accès à un système, l'une des premières étapes à suivre consiste à répertorier tous les progiciels installés et à comparer leurs versions installées avec leur dernière version.
Il est possible qu'un paquet obscur soit installé et qu'il ne soit pas beaucoup utilisé, mais qu'il soit extrêmement vulnérable à une attaque par élévation de privilèges. Vous pouvez ensuite exploiter ce package pour obtenir un accès root.
Utilisez la commande dpkg avec le -l balise pour répertorier les packages installés sur les systèmes basés sur Debian et Ubuntu :
dpkg-l
Pour les systèmes RHEL/CentOS/Fedora, utilisez cette commande pour répertorier les packages installés :
tr/min -qa
Vous savez maintenant comment énumérer manuellement Linux pour l'élévation des privilèges
L'élévation des privilèges dépend uniquement de l'énumération. Plus vous aurez accès à des informations, mieux vous pourrez planifier vos stratégies d'attaque.
Une énumération efficace est essentielle pour établir un pied, augmenter les privilèges et réussir à persister sur votre système cible. Bien que faire les choses manuellement aide, certaines des tâches peuvent être assignées à des outils automatisés pour gagner du temps et des efforts. Vous devez connaître les meilleurs outils de sécurité pour analyser un système à la recherche de vulnérabilités.