TryHackMe CTF Write-Up : RootMe

Dans ce write-up, nous verrons comment compléter le lab RootMe de TryHackMe , Un challenge CTF de niveau débutant qui requiert plusieurs techniques : Nmap, gobuster, élévation de privilèges...

Enumération

Commençons par un scan Nmap pour voir les ports ouverts puis un second sur ceux ouverts pour voir les services qui tournent dessus ainsi que le script par défaut de nmap sur ces ports

Dans ce scan nous trouvons que deux ports sont ouverts :

  • 22 : un service SSH 7.6p1 d’OpenSSH

  • 80 : Un serveur Apache 2.4.29

Essayons maintenant d’énumérer les dossiers de ce site web avec Gobuster

Gobuster dir -u http://ip-tryhackme -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt

Nous avons deux dossiers intéressants : /panel et /uploads, allons-y

Sur /uploads nous trouvons un dossier vide ( pour l’instant…)

Obtenir un shell

Sur /panel, On a ce qui semble être un uploader de fichier, je tente d’upload un fichier bénin « todo.txt »

Un message de couleur vert s’affiche en ce qui semble être du portugais et lorsque l’on se rend dans /uploads, le fichier « todo.txt » s’affiche correctement 😊

Nous retrouvons bien "todo.txt"

Nous allons alors upload un reverse shell php (de Pentest-monkey)

Vérifiez bien d’avoir mis votre adresse IP tryhackme et de connaitre le port que vous utilisez,

On upload et cette fois un message d’erreur s’affiche :

Erreur d'upload du fichier en extension .php

Apparemment les extensions .php sont bloquées, essayons alors un trick en changeant l’extension

Je change donc l’extension reverse-shell.php par reverse-shell.jpg.Php5 pour essayer de contourner diverses filtres

Je change l'extension du fichier en .jpg.Php5 Description automatically generated

Et cette fois ci, pas de message d’erreur, l’upload à l’air de fonctionner

Je check le /uploads et effectivement le fichier est là, il ne me reste plus qu’à setup un listener et de clicker sur le reverse-shell dans le dosser /uploads

Mettons un listener avec netcat avec le même port que celui configuré dans le reverse-shell
Accès initial réussi

Nous avons maintenant accéder au compte de service www-data, avant de passer à l’élévation de privilège je récupère le flag user.txt qui est surement dans le dossier /var/www

Elévation de privilège

Regardons les permissions SUID avec cette commande :

find / -type f -perm -u=s > 2/dev/null

Nous y trouvons un binary intéressant : /usr/bin/python

Regardons sur https://gtfobins.github.io/ pour trouver s’il y a une technique de d'élévation de privilège pour python avec le bit SUID d’activé et en effet

Il ne reste plus qu’à copier la commande et nous aurons les permissions root, nous pouvons récupérer le flag

J'espère que vous aurez appris quelque chose et apprécié mon write-up

N'hésitez pas à faire la room sur tryhackme : https://tryhackme.com/room/rrootme

mon profil tryhackme : https://tryhackme.com/p/Frozzinours

Last updated