[Willow][CTF][TryHackMe]

Challenge niveau medium du site TryHackMe

[Willow] CTF Thumbnail

Lien vers TryHackMe.com

[Task 1] Enumérations

Commençons les énumérations de façon classique avec Nmap et Gobuster.

1. Nmap

Nous constatons qu'en plus du port 22/tcp open ssh et du port 80/tcp open http, nous touvons le port 2049/tcp open nfs qui nous indique une possibilité de partage de fichiers via le réseau.

L'énumération Gobuster ne nous mène à rien.

[Task 2] Exploitation

1. Exploitation de la première page

Rendons-nous sur le site

Firefox first page

Faisons un copier coller des data vers cyberchef et utilisons la baguette magique proposée

cyberchef magic
cyberchef from hex

Sauvegardons le résultat dans un fichier first-page.txt

Nous pouvons constater que le code résultant pourrait bien correspondre à une clé privée SSH de par la présence de 2367 2367 2367 2367 2367 en début de code et qui pourrait bien correspondre aux cinq tirets du début d'une clé privée SSH

-----BEGIN RSA PRIVATE KEY-----

(idem pour les cinq tirets à la fin)

Profitons-en pour nettoyer le fichier first-page.txt de sa première ligne pour conserver uniquement les data que nous sauvegardons dans un fichier private-key.tx

2. Exploitation du port NFS

Nmap nous a montré que le port 2049/tcp open nfs était ouvert et qu'il existait une possiblité de partage de fichiers via le réseau.

Explorons les partages nfs disponibles

Faisons un mount de ce répertoire dans notre machine kali

et voyons ce qu'il contient

Nous avons maintenant à notre disposition deux paires de clés RSA

3. Décodage RSA

Commençons par nous intéresser au codage décodage comme présenté dans le site https://muirlandoracle.co.uk/2020/01/29/rsa-encryption/ donné en indice

extrait du site

En français: le <caractère décodé> = <caractère encodé> exposant <première clé privée> modulo <deuxième clé privée>.

Ce qui nous donne en python: answer = (int(chunk) ** d) % n

Écrivons notre propre script python decode_rsa.py pour décoder la clé privée SSH

Faisons un copier coller vers un fichier id_rsa ( ou python3 decode_rsa.py > id_rsa) .

Remarquons au passage que la clé est Proc-Type: 4,ENCRYPTED et qu'il nous faudra donc utiliser John The Ripper pour pouvoir l'utiliser.

4. Alternative de décodage RSA

Nous aurions tout aussi bien pu utiliser un calculateur RSA en ligne sans trop se préoccuper du mécanisme codage/décodage RSA comme nous l'avons fait.

Le RSA Express Encryption/Decryption Calculator fait très bien l'affaire et son utilisation est évidente.

RSA Calculator

[Task 3] Prise pied sur la machine cible

1. Décryptage de la clé SSH

Nous avons maintenant un utilisateur willow avec sa clé privée id_rsa dont le password est wildflower

2. Prise pied sur la machine cible

Récupérons le fichier user.jpg sur notre machine kali

image user.jpg

Extrayons le texte de l'image avec tesseract (au besoin: sudo apt install tesseract-ocr)

[Task 4] Escalade de privilèges

1. Sudo -l

Nos constatons que willow peut monter le répertoire /dev avec des privilèges sudo sans devoir entrer de mot de passe.

Voyons ce qu'il y a dans /dev

ls /dev

Le répertoire hidden_backup paraît très intéressant. Montons-le avec sudo

Nous avons maintenant les crédentiels de root:7QvbvBTvwPspUK et de willow:U0ZZJLGYhNAT2s.

Le contenu de root.txt nous dit que nous avons déjà reçu le root flag auparavant or la seule chose que nous ayons déjà reçue est le fichier user.jpg.

2. Root flag

Utilisons steghide pour explorer le fichier user.jpg

Contenu de root.txt

And this complete the vote of the Belgian jury ☺️✌️

[Task 5] Réponses aux questions

Question
Réponse

User Flag:

Root Flag:

Mis à jour

Ce contenu vous a-t-il été utile ?