Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases de l'élévation de privilèges

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de machine virtuelle7 min de lecture5 commandes

Ce que tu vas faire

Sur cette machine, il y a un deuxième compte, intern, qui a peu de droits. Un administrateur a laissé trois erreurs courantes qu'il peut trouver : un programme qui a plus de droits qu'il n'en faut, une règle sudo jamais restreinte, et une tâche planifiée qui fait confiance à un fichier que tout le monde peut modifier. Tu vas regarder ces trois choses depuis ton propre compte, student, sans t'en servir. En trouver une et l'utiliser est la tâche du lab.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de la leçon. Ce lab est une machine Ubuntu complète, rien que pour toi, donc elle met un peu plus de temps à démarrer qu'un conteneur. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de la machine, l'une après l'autre. Si l'un d'eux dit que la machine démarre encore, attends quelques secondes et appuie de nouveau. Pour suivre les commandes ou taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

La règle à retenir

Attention

Cette machine est à toi seul : aucune route ne mène à la machine d'un autre élève, et aucune vers internet, à part quelques dépôts de paquets. Attaque seulement cette machine : le Computer Misuse Act 1990 (loi britannique) fait d'une telle attaque contre une machine qui n'est pas la tienne une infraction pénale.

1. Découvre le deuxième compte

Cette machine a un deuxième compte, créé par la préparation du lab, sans aucun des droits de ton compte. getent passwd lit la liste des comptes du système et affiche une ligne pour intern : son dossier personnel et son interpréteur de commandes, rien de plus.

Commande
getent passwd intern

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

2. Regarde le programme setuid

Un programme setuid s'exécute toujours avec les droits de son propriétaire, quel que soit celui qui le lance. ls -l montre un s à la place du droit d'exécution du propriétaire : -rwsr-xr-x, propriétaire root. Donc celui qui le lance est root tant qu'il tourne.

Commande
ls -l /usr/local/bin/sysfind

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

3. Regarde la règle sudo

La configuration de sudo dit qui peut lancer quoi au nom de quelqu'un d'autre. Ton compte peut déjà la lire avec sudo. Cette ligne permet à intern de lancer un programme en tant que root, sans aucun mot de passe.

Commande
sudo cat /etc/sudoers.d/90-lab-intern

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

4. Regarde le script modifiable

Le cron de root (son planificateur de tâches) lance ce script chaque minute. ls -l montre rwxrwxrwx : tous les droits sont donnés. N'importe qui sur la machine, intern compris, peut donc changer ce qu'il fait avant le prochain passage de root.

Commande
ls -l /opt/maintenance/cleanup.sh

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

5. Vérifie que root le lance

Cette commande lit les tâches planifiées de root, comme sudo cat a lu la règle sudo : une ligne, le script de l'étape précédente, lancé chaque minute par root.

Commande
sudo crontab -l -u root

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Maintenant, fais le lab

Astuce

Tu as vu les trois faiblesses. En utiliser une pour devenir root est la tâche de ce lab : passe au compte à faibles droits avec su - intern (son mot de passe est dans README.md, lis-le avec cat README.md), trouve quelle faiblesse mène à root, et prouve-le comme le demande le README.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Elle se travaille dans un lab VM : chaque élève a sa propre machine Ubuntu avec un deuxième compte et trois faiblesses déjà en place. Le lab n'a pas de script de correction, car un élève sur cette machine peut écrire n'importe quel fichier qu'un script pourrait lire : l'élève rend un compte rendu de la faiblesse utilisée et des commandes employées, et vous le lisez. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.

À propos de ce labo et de sa source: Lab d’élévation de privilèges Linux : un binaire setuid, une règle sudo, une tâche cron

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.