THM - U.A High School
Présentation de la machine
- Niveau: Facile
- Lien : https://tryhackme.com/r/room/yueiua
- Outils
- nmap
- fuzz
- dirb
- hexeditor
- steghide
- openssl
Enumération
On commence par un simple scan nmap :
2 ports sont ouverts, le port ssh et le port http.
A l’aide de dirb, on découvre un fichier index.php dans un répertoire assets ce qui n’est pas commun :
On tente alors de vérifier l’existence ou non d’un parametre en entrée de ce fichier php à l’aide de FUZZ avec cette commande :
1 | ffuf -u 'http://10.10.85.246/assets/index.php?FUZZ=whoami' -mc all -ic -t 100 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/raft-small-words-lowercase.txt -fs 0 |
- -mc all : Affiche tous les codes d’erreur (pour être sur de ne rien louper)
- -ic : Rend la recherche insensible à la casse (ce qui signifie que fuzz sera detécté peut importe la capitalisation)
- -t 100 : Nombre de threads à 100
- -fs 0 : n’affiche pas les réponse qui ont une taille de contenu égale à 0
Ainsi, on trouve que cmd est un parametre valide :
En testant différentes valeurs pour ce parametre, on remarque rapidement qu’il permet d’executer des commandes sur le serveur et que la réponse est renvoyé en base64
On peut alors obtenir un reverse shell :
Exploration de la machine
En naviguant sur le répertoire du site internet, on trouve un fichier passphrase.txt qui contient ‘AllmightForEver!!!’
Comme son nom l’indique, c’est surement un mot de passe permettant de dechiffrer une clé ssh ou le contenu caché dans un fichier.
En continuant la navigation, on trouve un fichier dans le dossier image qui semble être corrompu :
Stéganographie
En utilisant steghide et la phrase obtenu précedemment, on remarque que le fichier n’est pas vraiment un ficher jpg :
A l’aide de hexeditor, on change alors les bits de signature png en jpg en se basant sur la liste qui est disponible : https://en.wikipedia.org/wiki/List_of_file_signatures
1 | hexeditor -b oneforall.jpg |
En utilisant à nouveau steghide, on peut maintenant obtenir le contenu caché dans le fichier :
1 | steghide extract -sf oneforall.jpg |
Ce qui nous permet d’obtenir les identifiants du compte deku.
Escalade de privilège
Ensuite, on remarque rapidement que l’utilisateur deku peut exectuer le fichier feedback.sh en tant que root :
En analysant ce fichier, on découvre qu’il permet d’écrire une entrée de l’utilisateur dans un fichier et que la plus part des caracteres spéciaux sont échapée sauf « > » et « / ».
Ainsi, on peut modifier le fichier /etc/passwd et ajouter un nouvel utilisateur avec des droits root.
Pour ce faire, il faut d’abord crée un mot de passe qui respece les règles de sécurité sur linux en utilisant :openssl passwd -1 -salt [salt] [password]
Ainsi, si on ajoute la ligne : **abb:$1$abc$czj10a8hEuHoKfs5PmF8//:0:0:root:/root:/bin/bash**
A notre fichier /etc/passwd
, on crée un utilisateur abb
avec un mot de passe abc
et des droits root
.
Pour ce faire, on lance le script feedback.sh
avec des droits root, puis on tape la commande suivande :
1 | '**abb:$1$abc$czj10a8hEuHoKfs5PmF8//:0:0:root:/root:/bin/bash**' >> /etc/passwd |
Il faut bien faire attention au guillement à cause de la présence du caractere $
qui mis en début de chaine de caractere indique que l’on fait référence à une variable d’environnement.
Ainsi, en utilisant cette utilisateur on obtient un accés root.