✍🏼 Writeup – Tomghost room TryHackMe

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 :

Exécution CVE-2020-1938

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 :

Connexion SSH skyfuck

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 :

Répertoire home skyfuck

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).

Flag utilisateur
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 :

Récupération clé secrète via john

J’enchaîne avec le fichier pgp :

Récupération contenu credential.pgp via john

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 :

Privesc avec la commande zip

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

Récupération du flag root
Voici le flag root bien mérité :

THM{Z1P_1S_FAKE}


Chaîne d’attaque

Schéma de la 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *