Heal HackTheBox (WriteUp)
Skills:
LFI (Local File Inclusion)
RCE (Remote Code Execution) in LimeSurvey
Hash Cracking with Hashcat
User Pivoting
Privilege Escalation via Consul
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
resumeEn 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
take-survey
Ajout dans /etc/hosts
/etc/hostsUn 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 :
ralphPassword :
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_userpassword =
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 ?