CentraleSupélecDépartement informatique
Plateau de Moulon
3 rue Joliot-Curie
F-91192 Gif-sur-Yvette cedex
1CC1000 - Systèmes d'Information et Programmation - Devoir à la maison : Escape the Shell!

Objectif

Le but de cette activité est d'utiliser les bonnes commandes du shell pour découvrir des mots de passe cachés. Vous avez appris certaines de ces commandes dans le quiz qui a introduit le deuxième TD. Dans cette activité, vous apprendrez d'autres commandes.

Vous devez vous connecter à un serveur distant, où vous trouverez un ensemble de répertoires et de fichiers qui vous mèneront dans une sorte de chasse au trésor.

Connexion au serveur distant.

Suivez les étapes suivantes pour vous connecter au serveur distant :

  1. Suivez ce lien pour vous connecter à MyDocker, un gestionnaire d'environnement virtuel fourni par CentraleSupélec.
  2. Cliquez sur Connexion avec le CAS et connectez-vous avec vos identifiants CentraleSupélec (en utilisant votre email et votre mot de passe habituel).
  3. Cliquez sur le bouton Demander un environnement (cliquez d'abord sur SIP Escape the shell si vous ne voyez pas ce bouton).

En cas d'erreur, déconnectez-vous du site (avec le bouton Déconnexion) et recommencez la procédure.

Connexion à votre Shell

Ouvrez un terminal sur votre ordinateur. Vous pouvez utiliser le terminal fourni par VS Code, ou un terminal autonome (Terminal sur macOS ou Linux, Git Bash sur Windows).

Allez sur la page MyDocker et :

  1. Copiez la commande ssh donnée dans la section Accès SSH à "Escape the Shell". Collez cette commande dans le terminal et exécutez-la. Un message apparaît vous demandant si vous voulez vous connecter à cette machine. Tapez yes et la touche d'entrée.
  2. Copiez le mot de passe de la page MyDocker, collez-le dans le terminal et appuyez sur la touche d'entrée. Notez que lorsque vous collez le mot de passe dans le terminal, rien ne s'affiche. C'est normal.

Si aucune erreur ne survient, vous devriez être connecté à un environnement virtuel distant.

Notes sur la commande ssh

SSH est l'abréviation de Secure Shell. Il s'agit d'un protocole réseau utilisé pour ouvrir une connexion à une machine distante à l'aide d'un shell. Le serveur SSH installé sur la machine distante généralement accepte des connexions sur le port 22. Le protocole SSH appartient à la couche 5 du modèle OSI.

La commande SSH que vous avez copiée depuis MyDocker a le format suivant :

ssh <username>@<adresseMachine(IP ou nom de domaine)> -p <numéroPort>@

Notez que le numéro de port spécifié dans la commande que vous avez copiée n'est pas 22. Cela est dû au fait que le serveur distant créé par MyDocker est un "morceau" d'un ordinateur physique, également appelé conteneur Docker. Nous utilisons différents ports pour distinguer les morceaux. Le fait que le port 22 soit le port par défaut pour le protocole SSH ne signifie pas que nous ne pouvons pas choisir d'en utiliser un autre.

Devenir root (plus facile à dire qu'à faire...)

Dans tout ordinateur, nous pouvons créer plusieurs comptes associés à différents utilisateurs. Certains utilisateurs peuvent avoir des privilèges d'administrateur, ce qui leur donne le droit d'effectuer des actions (par exemple, l'installation d'applications) que les autres utilisateurs ordinaires ne sont pas autorisés à faire. Il existe également un utilisateur spécial, généralement appelé root, qui dispose de pouvoirs spéciaux et presque illimités sur la machine.

L'objectif de toute personne souhaitant prendre le contrôle d'un système informatique est d'avoir accès au compte root.

La machine à laquelle vous êtes connecté en ce moment possède plusieurs comptes d'utilisateur. Vous vous êtes connecté avec un compte qui vous a été attribué. Mais il y a une faille. Caché dans vos répertoires, il y a un mot de passe qui vous permet d'accéder à un autre compte utilisateur. Une fois que vous avez accédé à l'autre compte utilisateur, un autre mot de passe est caché qui vous permet d'accéder à un autre compte. Le jeu se termine lorsque vous découvrez enfin le mot de passe du compte root.

 

Lorsque vous tapez un mot de passe dans le terminal, rien ne s'affiche, comme si vous ne tapiez rien du tout. C'est normal, les mots de passe ne sont pas affichés pour des raisons évidentes de sécurité.

 

Cet aide-mémoire Bash pourrait vous être utile.

 

Lorsque vous avez terminé, n'oubliez pas de fermer l'environnement virtuel en cliquant sur le bouton "Eteindre l'environnement" dans MyDocker.


SOLUTION

  • level0
 cd ..
 cat README.txt
  • level1
 cat .password_to_level2
  • level2
 cat password_to_level3.zip.part.* foo/bar/missing_part/password_to_level3.zip.part.e >password_to_level3.zip
 unzip password_to_level3.zip
 cat password_to_level3.txt
  • level3
 exit
 chmod +r ../level3/password_to_level4.txt
 cat ../level3/password_to_level4.txt
  • level4
 bzip2 -d password_to_level5.txt.b64.bz2
 base64 -d password_to_level5.txt.b64
  • level5
 export PATH=/bin:/usr/bin
 cat password_to_level6.txt
 /bin/su level6

ou

 /bin/cat password_to_level6.txt
 /bin/su level6
  • level6
 cd
 /usr/bin/wget http://localhost
 /bin/cat index.html
 /usr/bin/wget http://localhost/root.password
 /bin/cat root.password