[GoldenEye][CTF][TryHackMe]

Challenge niveau medium du site TryHackMe

[GoldenEye] CTF Thumbnail

"This room will be a guided challenge to hack the James Bond styled box and get root. Credit to creosote for creating this VM."

Lien vers Tryhackme.com

[Task 1] Intro & Enumeration

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

1. Nmap

Ce qui nous donne déjà une première réponse :

Question
Réponse

Use nmap to scan the network for all ports. How many ports are open?

4

3. Exploitation

Rendons-nous sur la page html du site avec Firefox

première page

analysons le code source de la page

code source première page

comme recommandé dans le challenge, inspectons tous les scripts et en particulier terminal.js

4. code source de terminal.js

Question
Réponse

Who needs to make sure they update their default password?

boris

5. Cyber Chef

Le code source nous révèle un hash qui ressemble furieusement à des codes ASCII.

Confions ce hash à cyber chef et au passage, remarquons qu'il nous propose le décodage « magique »

cyberchef

Ce qui nous donne la réponse à la question suivante.

Question
Réponse

Whats their password?

InvincibleHack3r

Nous connaissons maintenant deux utilisateurs, boris et natalya et nous avons un mot de passe pour boris.

[Task 2] Its mail time...

1. Firefox

Essayons d'abord de nous connecter via Firefox avec l'utilisateur boris:InvincibleHack3r.

sev-home login
GoldenEye page index

L'analyse du code source de la page ne mène à rien d'exploitable.

Comme suggéré dans le challenge et dans la page index, tentons de nous connecter avec l'utilisateur boris:InvincibleHack3r au serveur pop3 sur le port 55007 trouvé avec nmap .

( pop3 en ligne de commande )

2. Hydra

Comme les crédentiels de l'utilisateur boris ne fonctionnent pas pour le serveur pop3, le challenge suggère d'utiliser Hydra.

Lançons une brute-force hydra pop3 port 55007 avec la wordlist classique rockyou.txt

Au bout de 10 minutes, nous n'avons trouvé aucun password et la commande semble partie pour des heures ! Dans les challenges THM, les attaques brut-force répondent en général en quelques minutes, certainement en moins de 10 minutes. (Tout dépend évidemment de la vitesse de calcul de votre machine.)

Changeons la wordlist et lançons Hydra avec fasttrack.txt en lieu et place de rockyou.txt.

idem pour natalya

3. Utilisateurs pop3 trouvés jusqu'à présent

Utilisateur
Password

boris

secret1!

natalya

bird

4. Réponses aux questions

Questions
Réponses

If those creds don't seem to work, can you use another program to find other users and passwords? Maybe Hydra?Whats their new password?

secret1!

Inspect port 55007, what services is configured to use this port?

telnet

What can you find on this service?

emails

What user can break Boris' codes?

natalya

5. Emails

Boris

Natalya

[Task 3] GoldenEye Operators Training

1. Modifier /etc/hosts

Comme indiqué dans le dernier email de natalya, modifions le fichier /etc/hosts pour y ajouter

Rendons-nous ensuite sur la page severnaya-station.com/gnocertdir

2. Exploitation de la page severnaya-station.com/gnocertdir

login page

Connectons-nous avec les crédentiels xenia:RCP90rulez! trouvés dans le dernier email de natalya et explorons son profil.

xenial page
xenial messages

Dans les messages de xenia, nous trouvons doak un nouvel utilisateur pop3

Comme pour boris et natalya, passons-le à Hydra

Nous avons le nouveau crédentiel pop3 doak:goat

Lisons ses mails:

Ce qui nous donne un nouvel utilisateur du site dr_doak:4England!

Connectons-nous au site (d'abord logout pour xenial, puis login) et explorons son profil.

dr_doak private files

Téléchargeons le fichier s3cret.txt et lisons-le:

Le contenu de ce fichier suggère que les crédentiels de l'utilisateur 'admin' du site se trouvent dans la page /dir007key/for-007.jpg

dir007key/for-007.jpg

Téléchargeons l'image et analysons le contenu avec la commande strings for-007.jpg

visiblement eFdpbnRlcjE5OTV4IQ== est un hash base64 (présence des deux == à la fin du hash) qui décodé (par exemple cyberchef ou dcode fr) donne xWinter1995x!

3. Exploitation du login Administrateur

Nous avons maintenant les crédentiels admin:xWinter1995x!

Retournons sur le site et connectons-nous en tant que admin et constatons que cet utilisateur a visiblement plus de droits, notamment ceux de modifier la configuration du site.

page login admin

4. Réponses aux questions

Questions
Réponses

Try using the credentials you found earlier. Which user can you login as?

xenia

Have a poke around the site. What other user can you find?

doak

What was this users password?

goat

What is the next user you can find from doak?

dr_doak

What is this users password?

4England!

5. Prise pied dans la machine - reverse shell

Cherchon la version de Moodle

Moddle version

Lançons une recherche Google d'exploits pour Moodle du style « search exploits moodle reverse shell» et on trouve assez rapidement une vulnérabilité [CVE-2021-21809] du côté du correcteur orthographique de Moodle.

https://ine.com/blog/cve-2021-21809-moodle-spellchecker-path-authenticated-rce

Cette vulnérabilité [CVE-2021-21809] de Moodle permet d'exécuter une commande à distance (reverse-shell) en modifiant le path système du correcteur orthographique.

Un passage par la base de données des exploits de Rapid7 confirme la vulnérabilité et donne la marche à suivre dans l'annexe suivante :

https://talosintelligence.com/vulnerability_reports/TALOS-2021-1277

"To exploit the shell injection vulnerability, the administrator sets a path to the legacy server-side spellcheck binary (aspellpath) containing a backtick shell injection and sets PSpellShell as the spellchecking engine. When a server-side spellcheck is requested, lib/editor/tinymce/plugins/spellchecker/classes/PSpellShell.php uses aspellpath to unsafely construct a shell_exec command. The spellchecker plugin does not have to be enabled."

Lançons une recherche de 'spell' dans la page Moodle admin de notre cible

Comme indiqué dans la vulnérabilité, changeons le correcteur en PSpellShell

set PSpellShell

Cherchons un oneline reverse-shell par exemple dans revshells.com

oneline reverse-shell

Essayons un de mes reverse-shells préféré, le Python3 shortest:

Copions le reverse-shell dans Moodle et sauvegardons le tout.

moodle reverse-shell

Mettons Kali à l'écoute du port 12345 avec nc -nvlp 12345

Dans Moodle créons une nouvelle entrée de blog et lançons le correcteur orthographique

Nous voilà entrés dans la machine

[Task 4] Privilege Escalation

Transférons les fichiers nécessaires de la machine Kali vers la machine cible et utilisons ma méthode générique d'analyse des possibilités de 'privilege escalation'.

1. sudo -l

Inexploitable

suid3num.py

Rien d'exploitable à première vue

Bien que le challenge nous indique d'utiliser la vulnérabilité OverlayFs, je préfère rester plus générique dans mon analyse et utiliser l'outil les.sh.

Voici le résultat de les.sh suggérant des vulnérabilités exploitables dans l'ordre de leur probabilité d'exploitation

Linux Exploits Suggester

4. Kernel version

5. Vunérabilités trouvées

Les deux premières vulnérabilités de la liste (et donc les plus probables) sont:

  • DirtyCow

  • OverlayFs

6. Commençons par DirtyCow

les.sh nous suggère https://www.exploit-db.com/exploits/40611. La lecture du mode d'emploi de l'exploit n'est pas évidente...

Après une recherche sur la base de donnée exploit.db

Recherche dirtycow

je préfère utiliser https://www.exploit-db.com/exploits/40616 qui me paraît plus facile à utiliser

dirtycow mode d'emploi

le compilateur gcc n'est pas installé. À la place, nous pouvons utiliser cc, son équivalent UNIX.

Téléchargeons et transférons le fichier 40616.c que j'ai renommé en dirtycow.c pour plus de clarté.

Suivons pas à pas la mise en œuvre de l'exploit et ne nous préoccupons pas des 'warnings' générés.

Et voilà, mission accomplie: nous sommes root.

Allons à la page /006-final/xvf7-flag/ et boom... 🎉

Flag Captured

7. Réponses aux questions

Question
Réponse

Whats the kernel version?

3.13.0-32-generic

What is the root flag?

568628e0d993b1973adc718237da6e93

[ Bonus ] utilisation de overlay.fs exploit

Le challenge préconise l'utilisation de overlay.fs https://www.exploit-db.com/exploits/37292

Dans ce cas-ci, il faudra utiliser le compilateur cc au lieu de gcc avec la subtilité supplémentaire qu'il faut remplacer gcc par cc dans le code source de l'exploit.

overlay.fs code source

Téléchargeons, transférons le fichier ofs.c vers la machine cible et exécutons l'exploit en suivant le mode d'emploi donné dans le code source

Comme pour DirtyCow, il ne faut pas se soucier des warnings.

Voici ce que cela donne:

overlayFS exploit

Bingo, ici aussi, nous voilà root

Mis à jour

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