$ cat Capture The Flag : Exploration du CVE-2020-1938, Alias Ghostcat
Contexte: Avant de commencer, il est essentiel de comprendre le contexte technique dans lequel ce défi s’inscrit. Il se trouve que le défi est basé sur l’exploitation d’une certaine vulnérabilité critique identifiée sous la référence CVE-2020-1938, plus commun…
Contexte:
Avant de commencer, il est essentiel de comprendre le contexte technique dans lequel ce défi s’inscrit. Il se trouve que le défi est basé sur l’exploitation d’une certaine vulnérabilité critique identifiée sous la référence CVE-2020-1938, plus communément connue sous le nom de Ghostcat.
Ghostcat est une faille détectée dans les serveurs web Apache Tomcat. Cette vulnérabilité a été classée comme critique, avec une gravité de 9,8 sur 10 pour la version 3.1 et de 7,5 sur 10 pour la version 2.
Mais pourquoi cette vulnérabilité est-elle si importante ? Près de 118 843 sites web dans le monde utilisent le serveur Apache Tomcat. Une attaque réussie pourrait permettre à un attaquant de lire des fichiers sur le serveur et, dans certains cas, il pourrait potentiellement exécuter des commandes sur le serveur.
Pour cela, certaines conditions doivent être remplies. Il faut que le port AJP soit ouvert, que l’attaquant puisse envoyer des fichiers au serveur à travers une fonctionnalité de l’application et que ces fichiers soient enregistrés dans la racine du serveur.
Maintenant que nous avons posé le contexte, nous pouvons passer à la description de notre démarche pour relever le défi Capture The Flag ‘TomGhost’.
Guide:
L’adresse IP de la victime est la suivante:
10.10.233.71
Notre première action consiste à effectuer l’analyse NMAP suivante pour repérer les ports ouverts et les services :
nmap -sV --script vuln -A -T5 -oN TomGhost/Nmap 10.10.233.71

Nous avons utilisé la console msfconsole pour trouver une exploit adapté au service ajp13 fonctionnant sur le port 8009, ce qui nous a permis d’obtenir le nom d’utilisateur et le mot de passe
Utilisateur : skyfuckMot de passe : 8730281lkjlkjdqlksalks
Nous avons ensuite tenté de nous connecter en SSH à la machine, avec succès
Par la suite, nous avons vérifié les UTILISATEURS et nous avons accédé au dossier utilisateur merlin, où nous avons découvert le premier flag :
THM\{GhostCat_1s_so_cr4sy\}
Nous avons ensuite essayé d’obtenir une élévation de privilèges pour cet utilisateur. Malheureusement, la console Python n’a pas fonctionné car python3 n’était pas installé.
Nous avons donc cherché un moyen d’accéder à l’utilisateur merlin, ce qui nous a conduits à découvrir deux fichiers intéressants dans le dossier de l’utilisateur skyfuck :
tryhackme.asccredentials.pgp
Après les avoir copiés sur notre machine à l’aide de scp, nous avons constaté que tryhackme.asc est un fichier chiffré. Nous avons tenté d’importer ce fichier via la commande pgp –import tryhackme.asc, qui nous a demandé un mot de passe. Afin de déchiffrer le fichier, nous avons extrait un hachage en utilisant johntheripper :
gpg2john tryhackme.asc > credential.hash
Nous avons ensuite procédé à son déchiffrement avec john :
john credential.hash -wordlist=*
Cela nous a permis d’obtenir le mot de passe « alexandru »
En important le fichier PGP et en utilisant le mot de passe, puis en décryptant le fichier credential.pgp, nous avons finalement obtenu le mot de passe du compte merlin :
Utilisateur : merlin
Mot de passe :
asuyusdoiuqoilkda312j31k2j123j1g23g12k3g12kj3gk12jg3k12j3kj123j
Lorsque nous nous sommes connectés en tant que merlin, nous avons exécuté la commande sudo -l, qui nous a informés que nous avions un accès root à ZIP mais sans les privilèges sudo. Heureusement, un exploit trouvé via gfobins a fonctionné à merveille et nous avons ainsi obtenu l’accès root, mettant un terme à nos actions avec un dernier CD /ROOT
Le drapeau final est : THM\{Z1P_1S_FAKE\}