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.
getent passwd internAffiché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.
ls -l /usr/local/bin/sysfindAffiché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.
sudo cat /etc/sudoers.d/90-lab-internAffiché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.
ls -l /opt/maintenance/cleanup.shAffiché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.
sudo crontab -l -u rootAffiché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.