Hey guy’s ! what’s up ?
Introduction
Me revoilà pour vous présenter le write-up d’un CTF que j’ai bien apprécié, il s’agit de Cyborg de la plate-forme TryHackMe.
Je pense que la plupart d’entre vous a bien évolué et assimilé les bases, mais je vais tout de même détailler et expliquer de façon simple pour une meilleure clarté.
Le niveau de ce challenge est Easy donc pas de difficulté 😉
Here we go !
Comme d’habitude, l’objectif est de compromettre le système afin de pouvoir lire le contenu des fichiers user.txt et root.txt et d’obtenir les 2 flags.
Collecte d’informations
C’est parti, je commence par effectuer un scan de la machine cible pour connaître le nombre de ports ouverts :
nmap -A -sV -p- 10.10.185.146
Maintenant que j’ai le nombre de ports ouverts ( 2 ports : le 22 et le 80), je vais scruter les autres informations que j’ai obtenues pour répondre à la deuxième et troisième question.
Il faut que je trouve les services qui sont exécutés sur les ports 22 et 80, donc je reviens sur mon scan précédent dans lequel j’ai tout ce qu’il faut :
Sur le port 22 : le service exécutant = ssh
Sur le port 80 : le service exécutant = http
À présent, je dois trouver le premier flag qui est contenu dans le fichier user.txt, pour cela je vais m’orienter vers l’interface web.
Après avoir visité la page web je n’ai rien trouvé d’intéressant :
Je vais essayer d’énumérer les sous domaines en utilisant gobuster :
gobuster dir -u http://10.10.185.146/ -w /usr/share/wordlists/dirb/common.txt
L’énumération étant faite, je visite le sous domaine /admin :
À première vue je ne vois pas d’information capitale, je vais donc visiter la rubrique Admins pour voir ce que je peux trouver :
Bingo ! j’ai découvert trois noms d’utilisateurs potentiels. En lisant les échanges entre Alex, Josh et Adam je vois qu’Alex ne sait pas comment configurer correctement le proxy squid.
Peut-être que je trouverai dans le répertoire /etc des choses plus utiles, je vais faire un tour pour jeter un coup d’œil.
En regardant le contenu du répertoire /etc j’ai trouvé un autre répertoire /squid dans lequel se trouve un fichier passwd.
Je regarde à l’intérieur et je vois un hachage d’une archive, je vais le copier dans un fichier pass.txt puis essayer de le craquer en utilisant JohnTheRipper :
echo ‘$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.’ > pass.txt
john pass.txt -w=/usr/share/wordlists/rockyou.txt
Ça fonctionne, j’ai un mot de passe : squidward
Exploitation
Une étape importante, j’ai collecté un maximum d’informations précédemment mais pas entièrement terminée car je dispose que d’un mot de passe.
En réfléchissant bien, je me souviens d’une rubrique Archive qui possède la possibilité de télécharger son contenu :
Le téléchargement effectué, je vais le décompresser:
tar -xvf archive.tar
Hmm, il y a un fichier qui attire mon attention README :
cat home/field/dev/final_archive/README
Super, en fait ce sont des fichiers de sauvegarde qui sont créés par Borg ! en plus il est capable de dupliquer… intéressant comme information.
Bon je vais commencer par installer l’outil : apt install borgbackup
C’est fait, je peux lister le contenu du répertoire /final_archive en utilisant le mot de passe squidward :
Je me suis informé sur le fonctionnement de cet outil et les différentes commandes. Je dois créer un nouveau dossier puis monter le répertoire /final_archive dans ce dernier en utilisant le mot de passe squidward.
mkdir important
borg mount home/field/dev/final_archive important
Après avoir exécuté ces commandes je vais chercher un moyen de trouver la possibilité de connexion via le service ssh du port 22.
Cela étant fait ! je viens de visiter le bureau mais rien d’intéressant, je passe au répertoire /Documents :
Et voilà le travail, j’ai obtenu les informations d’authentification. Sans trop tarder je fonce me connecter en utilisant le ssh : ssh alex@10.10.185.146
C’est super ça fonctionne ! je vais lire le contenu du fichier user.txt pour obtenir mon premier flag :
Maintenant que j’ai mon flag utilisateur, je dois escalader les privilèges pour obtenir celui de root.txt.
Pour cela, j’exécute toujours la commande sudo -l (dans tous les CTF) :
Le fichier appartient à Alex, je peux donc librement modifier le contenu de ce fichier pour qu’il devienne root. Vu que je suis déjà Alex sur le serveur, j’exécute les commandes suivantes pour avoir les privilèges du super-utilisateur root :
chmod 777 /etc/mp3backups/backup.sh (donne tous les droits sur ce fichier)
echo « /bin/bash » > /etc/mp3backups/backup.sh (fait appel au shell)
sudo /etc/mp3backups/backup.sh (exécute en tant que sudo le fichier pour devenir root)
Conclusion
C’est terminé pour ce CTF fort sympathique, j’ai découvert un nouvel outil borgbackup. Il y avait pas mal de commandes également pour l’apprentissage de Linux pour les débutants, une partie sur les droits, le shell, une belle vulnérabilité au sein d’un fichier de sauvegarde…
Voilà c’est tout pour moi, je vous laisse revoir cet article si vous êtes bloqués. N’hésitez pas à me contacter si vous avez des questions, je reste à votre écoute les amis !
Je vous dis à bientôt pour une nouvelle aventure 😉 PEACE !
2 Responses
Salut master, j’ai pas compris comment tu as réussi à passé en Root depuis le compte utilisateur d’alex
Salut Alban,
Enfaite dans un premier temps tu donne les droits nécessaire au fichier backup.sh :
chmod 777 /etc/mp3backups/backup.sh
Puis tu tape la commande qui va ducoup rajouter « /bin/bash » pour escalader tes privilèges (tu peux voir cette faille sur le net ;))
echo « /bin/bash » > /etc/mp3backups/backup.sh
Et enfin tu exécute la commande avec sudo (la commande tu le vois quand tu tape sudo -l)
sudo /etc/mp3backups/backup.sh (exécute en tant que sudo le fichier pour devenir root)