
Identify recent vulnerabilities to try exploit the system or read files that you should not have access to.
On part sur une room à 2 niveaux :
- Récupération du flag utilisateur
- Récupération du flag root
1- Reconnaissance
Je garde mes bonnes habitudes, je regarde tout d’abord où je met les pieds avant d’avancer plus loin, et merci Nmap pour le coup de main :

Explications sur la commande :
- -sS : On souhaite faire un TCP SYN (Stealth) scan (ou half open scan car on ne réalise pas l’intégralité du 3-way handshake TCP).
- -A : Aggressive scan options = active la détection d’OS (-O) , le scan de version (-sV), utilisation des scripts par défaut (-sC) et réalise un traceroute de la cible (–traceroute).
- -Pn : Considérer tous les hôtes comme étant connectés (saute l’étape de découverte des hôtes).
- -p- : Scan l’intégralité des ports possibles.
- -T4* : Choisit la « politique de temporisation » 4 (la plus rapide étant la 5, par défaut nmap utilise la valeur 3).
- -oA : Sortie dans les trois formats majeurs en même temps (normal, XML et grepable).
* Concernant la « politique de temporisation », je choisis volontairement une valeur élevée pour scanner plus rapidement, mais attention à 2 choses :
- Si votre connexion est mauvaise, il risque d’y avoir des retransmissions voire des échecs de communication, donc au final temps rallongé et résultat de scan bancal.
- En condition réelle de pentest plus le scan est « rapide » plus il va avoir de chance d’être vu avec des solutions IDS/IPS (Intrusion Detection/Prevention System) et des pics vont être immédiatement visibles sur un éventuel SIEM (Security Information and Event Management) donc privilégier un scan plus « lent ».
On observe que les ports suivants sont ouverts sur la machine cible :
- 22 : OpenSSH 7.2p2 (serveur SSH)
- 53: DNS
- 8009 : Apache Jserv Protocol v1.3 (AJP)
- 8080 : Apache Tomcat 9.0.30 (serveur d’applications)
2- Mapping
Au vu du nom de la room (TomGhost) je décide de débuter le combat au niveau du serveur Tomcat qui affiche la page suivante sur son interface web :

Circulez, rien à voir !
Une petite recherche sur le web avec la version de Tomcat, et je tombe alors nez à nez avec cette jolie CVE, j’ai nommé la CVE-2020-1938, aussi connue sous le doux nom de Ghostcat (vous aussi ça vous rappelle quelque chose ?).

Il s’agit là d’une faille de type LFI (Local File Inclusion) permettant de lire des fichiers sur le serveur et de les afficher, et même d’exécuter des fichiers JSP (Java Server Page) sur le serveur (ce qui pourrait conduire à une RCE si le serveur permet l’upload de ce type de fichier).
3- Exploitation
Je continue sur ma lancée initiale, et je récupère un POC sur le repo GitHub de Hancheng-Lei que j’exécute pour récupérer le fichier WEB-INF/web.xml :

On récupère ce qui semble être un couple identifiant / mot de passe, et pour m’en assurer je n’hésite pas à tenter une connexion SSH avec :

Super ! On a un premier pas dans le système !
Je navigue alors dans les dossiers, et je repère que dans mon répertoire home se trouve 2 fichiers pour le moins intéressants :

Je récupère ces 2 fichiers via SCP :

En parallèle je poursuis ma navigation, et je trouve le flag utilisateur dans le répertoire home d’un autre utilisateur (merlin).

Merci à l’enchanteur d’avoir laissé son home accessible en lecture ainsi que le fichier user.txt qu’il contient :
THM{GhostCat_1s_so_cr4sy}
Maintenant je pars en quête du flag root !
4- Elévation de privilèges
Je retourne jeter un œil aux fichiers pgp et asc trouvés dans mon home, et pour ça je vais demander un peu d’aide à John :

J’enchaîne avec le fichier pgp :

Génial ! On récupère ce qui semble être les accès au compte de l’utilisateur merlin, j’essaie ça de ce pas :

Maintenant que je suis devenu l’enchanteur officiel de Kaamelott, je vais tenter de connaître l’étendue de mes pouvoirs :

Bonne nouvelle, je peux appeler la commande zip en tant que root via sudo (ça sent la route toute tracée vers le dernier niveau d’élévation !).
Une recherche sur le site GTFObins avec la command zip nous donne la manipulation suivante :

On suit à la lettre les consignes données, et on obtient … le flag root !

Voici le flag root bien mérité :
THM{Z1P_1S_FAKE}
Chaîne d’attaque

Retour d’expérience
Challenge plutôt rapide (30 minutes) et qui ne laisse pas la place à d’éventuels rabbit holes.
Je suis d’accord avec le niveau annoncé de easy, je n’ai pas cherché dans plusieurs directions, ni même eu besoin de creuser pour avancer.
Conclusion
Une room que je qualifierais de « divertissante », et bien que centrée sur une vulnérabilité d’Apache Tomcat, elle a su exploiter d’autres biais de manière à être bien plus intéressante.