Heal HackTheBox (WriteUp)

Reconnaissance

Création de l'espace de travail :

Nous établirons notre espace de travail en créant trois dossiers pour stocker les contenus importants, les exploits et les résultats de la reconnaissance à l'aide de Nmap.

Vérification de la Connectivité VPN

Vérification de la connexion VPN pour assurer une communication stable avec la machine cible.

Recherche des ports ouverts avec Nmap :

Exploration des ports ouverts et exportation dans le fichier "allPorts" dans le répertoire Nmap:

Scan de la version des ports avec Nmap: (22,80)

Utilisation de Nmap pour scanner la version des ports et extraction des informations dans le fichier "targeted" :

Pour résoudre les noms de domaine en adresses IP via DNS, on insère dans le fichier /etc/hosts le nom de domaine associé à son adresse IP:

Port 80 - HTTP

Sur le site principal, on trouve la possibilité de créer un compte utilisateur.

Une fois connecté, on découvre une fonctionnalité permettant d’exporter un CV au format PDF.

Vulnérabilité LFI (Local File Inclusion)

Exploitation LFI via resume

En interceptant la requête liée au téléchargement de CV, on découvre une vulnérabilité LFI:

⚠️ Il est obligatoire d’inclure le token d’authentification, sinon la requête échoue.

Extraction de fichiers sensibles

Accès à la base de données SQLite

En énumérant les fichiers sensibles, on découvre une redirection vers /storage/development.sqlite3

On télécharge la base de données et on extrait deux comptes avec leurs hashs bcrypt :

Crack des hashs

Utilisation de Hashcat

On utilise Hashcat pour tenter de cracker les hashs via rockyou.txt :

Résultat : on trouve le mot de passe de ralph [email protected] : 147258369

Découverte de sous-domaine : take-survey

Ajout dans /etc/hosts

Un nouveau sous-domaine apparaît dans l’application. On l’ajoute à notre fichier hosts

Vulnérabilité LimeSurvey CMS

Accès à l’espace admin

On découvre que l’interface d’administration est accessible à l’URL suivante:

http://take-survey.heal.htb/index.php/admin

On se connecte avec les identifiants de Ralph :

  • Username : ralph

  • Password : 147258369

Nous avons repéré que la version utilisée de LimeSurvey était 6.6.4, qui est vulnérable à une Remote Code Execution (RCE).

Exploitation RCE via un Plugin Malveillant

Nous avons adapté le script d’exploitation à notre situation.

Tout d'abord, nous avons créé un fichier compressé contenant un fichier config.xml et un script PHP de reverse shell :

Ensuite, nous avons installé ce plugin malveillant via l'interface web de LimeSurvey.

En passant la souris sur le plugin installé, nous avons détecté l'ID du plugin.

Après avoir modifié le script pour inclure cet ID, nous avons mis notre écoute sur le port 443 :

Enfin, nous avons exécuté l'exploit via Python :

Traitement de la terminal Linux:

Pivoting User ron

En explorant la machine, nous avons trouvé un autre utilisateur ron.

Un fichier de configuration dans le dossier application contenait des identifiants et mots de passe pour l'accès à la base de données :

  • username = db_user

  • password = AdmiDi0_pA$$w0rd

Avec ces identifiants, nous avons pu accéder au compte de ron, ce qui nous a permis d’obtenir le flag user.txt.

Flag user.txt :)

Élévation de Privilèges

Découverte du Port 8500 (Consul)

En observant les ports ouverts, nous avons repéré le port 8500, qui correspond à l'interface web de Consul.

Après avoir effectué une requête sur 127.0.0.1:8500/ui/, nous avons trouvé la version de Consul 1.19.2.

Vérification de l'Accès à l'API REST

Nous avons testé l'API REST de Consul pour vérifier si elle était accessible sans authentification :

Nous avons obtenu une réponse confirmant que l'API était ouverte.

Exploitation via une Check Malveillante

Nous avons enregistré un service avec une check malveillante en utilisant une commande bash pour ouvrir un reverse shell vers notre machine :

Enregistrement d’un service avec une check malveillante

Consul permet d’enregistrer dynamiquement des services via une requête HTTP. On exploite cela pour créer une "check" qui exécute une commande bash.

Ce que fait ce payload :

  • Check.Args[] : contient une commande bash qui ouvre un reverse shell.

  • Interval: définit une exécution automatique toutes les 10 secondes.

En exécutant ce payload, nous avons réussi à obtenir un shell root.

Flag root.txt :)

Mis à jour

Ce contenu vous a-t-il été utile ?