How to root DX1: Liberty Island – THM – Fr

Can you help the NSF get a foothold in UNATCO’s system?

 

DX1: Liberty Island est un CTF proposé par TryHackMe de niveau moyen.  L’énumération Web est instructive dans le sens où il faut créer sa propre wordlist. L’escalade de privilège est un peu complexe. C’est un bon CTF pour progresser. 

Enumération

Commande :

nmap -T5 -p- -sVC 10.10.20.94

Il y a 3 ports ouverts :

22 – SSH

80 – HTTP 

5901 – VNC 

23023 – HTTP – UNATCO Liberty Island – Command/Control

Enumération WEB sur le port 80

Dans le fichier robots.txt, NMAP nous montre la présence du répertoire /datacubes . Lorsqu’on s’y rend le site nous redirige sur cette nouvelle URL http://10.10.20.94/datacubes/0000/

GoBuster

Selon ce qui est affiché comme information, il semble s’agir de messages archivés. On va voir s’il y a en d’autres. Pour cela, avec Gobuster, on va parser les archives en allant sur la page /0001 puis /0002.

Création d’une liste de numéros :

Je l’ai fait avec Excel pour gagner du temps à partir d’un PC Windows. Dans une cellule de format texte, il faut mettre 0000 et tirer ( + ) jusqu’à 1000.

Ensuite, il faut copier la colonne dans le Notepad, puis copier-coller son contenu dans un fichier sous Kali qui sera ensuite utiliser avec Gobuster.

Démonstration en vidéo

Commande :

gobuster dir -u http://10.10.20.94/datacubes/ -w num.txt

Nous avons 6 résultats. Je vous laisse regarder sur ce qui se trouve sur les autres. Je vais aller directement sur le dernier /0451 … le plus intéressant…

/0451

Il est expliqué que le login VNC sur la machine de jacobson est composé de « smashthestate » avec une clé hmac’ed qui est présente dans la liste « bad actor », le tout converti avec l’algorithme de hashage MD5.

Bad Actors

La liste se trouve sur le site web à cette URL http://10.10.20.94/badactors.html

La seule indication pour le nom d’utilisateur sont les initiales JL. Dans la liste « bad actor », le seul nom avec ses initiales est jlebedev

Création du mot de passe VNC

Le site https://www.freeformatter.com/hmac-generator.html nous permet de calculer le hash du mot de passe.

Il ne faut prendre que les 8 premiers caractères.

Initial foothold - VNCVIEWER

Commande :

vncviewer 10.10.20.94:5901

 

Une fois connecté, on trouve sur le bureau un exécutable badactor-list

Execution badactor-list

On va exécuter cette application  afin de voir ce qui se passe.

 

L’application fait 2 choses. Elle se synchronise à l’adresse http://UNATCO sur le port 23023 et  une fois la connexion établie, elle semble récupérer la liste des Bad Actors.

Récupération de badactor-list en local sur Kali

Mise en place d’un serveur web avec python

Commande :

python3.8 -m http.server

Récupération sur Kali

Commande :

wget http://10.10.20.94:8000/badactors-list

Wireshark et Buprsuite

Avec l’aide de Wireshark, on va voir ce qui se passe au niveau réseau. Il faut d’abord modifier le fichier HOSTS, afin que l’application se connecter au bon endroit et donc récupérer la liste bad actors.

Une fois la capture terminée, on va utiliser le filtre http pour éliminer toutes les trames liée à VNC.

Pour voir la requête http en détail, il faut faire un clic-droit dessus et faire suivre http stream

Dans la fenêtre qui s’affiche, on récupère la communication entre Kali et le serveur UNTACO. On peut voir qu’il y a une commande directive qui effectue un cat sur le fichier badactors.txt sur l’URL UNATCO:23023

Nous allons récupérer cette requête et l’exécuter à nouveau avec BurpSuite.

Accès à l’URL 10.10.20.94 :23023

Interception de la requête avec BurpSuite

Renvoi de l’interception dans Repeater et y copier la requête vu dans Wireshark.

On peut voir que l’on récupère la liste des bad actors.

En changeant la commande cat par la commande id, on peut voir que l’on a des droits root.

Escalade de privilège

Le reste ensuite est simple. Il existe plusieurs méthodes pour avoir un accès root.

Commande :

Directive : cp /bin/bash /tmp

Directive : cd /tmp

Directive : chmod 7777 /tmp/bash

Ensuite, il faut revenir sur la console VNC, et se rendre dans le dossier /tmp via l’explorateur de fichier et exécuter bash à travers le terminal.

Commande :

./bash -p

 

#

That’s all folks

Merci d’avoir pris la peine de venir sur le site de lire ce Write Up

J’espère qu’il vous a plus et qu’il vous apprit des nouvelles choses.

N’hésitez pas à laisse un commentaire ou à partager cet article. 

Facebook
Twitter
LinkedIn
Pinterest