Chemistry HackTheBox (Writeup)
Skills:
File Upload Abuse (injection in a .cif file
Exposing database content
MD5 hash decryption
Python 3.9 aioHttp LFI explotation
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:

Analyse des ports ouverts avec extractPorts:
Utilisation de la fonction extractPorts pour afficher de manière synthétique les ports ouverts et les copier dans le clipboard (22,5000)

Scan de la version des ports avec Nmap:
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:


Premièrement, nous nous inscrivons sur le site cible.

Vulnérabilité File Upload Abuse (.cif file)
Le site nous demande de téléverser un fichier .CIF.

Tentative cmd.php
Pour tous les scénarios ci-dessous, nous allons utiliser le fichier PHP suivant, nommé "cmd.php", qui nous permettra d'injecter des commandes au niveau du système du serveur :
Cependant, nous rencontrons un code d'erreur. "Method Not Allowed"

Nous interceptons la requête avec BurpSuite.

Nous essayons plusieurs types d'exploitations (validation côté client, extension personnalisée avec .htaccess, le nom du fichier devant contenir "cif", vérification du type de fichier, conversion en MD5, etc.), mais aucun n'a fonctionné.
CIF Code Injection:
Après une recherche sur Internet, nous trouvons la possibilité d'injecter du code malveillant dans un fichier .cif.
Voici le contenu du fichier cmd.cif pour nous verser une revershell:
Nous nous connectons ensuite avec netcat (nc) sur le port 4444.

Élévation de privilèges :
Une fois que vous avez accès au serveur Linux, voici les commandes à effectuer pour le traitement en terminal :
Cela permettra de travailler de manière beaucoup plus efficace et surtout plus confortable.
Nous découvrons une base de données nommée database.db.

Exploration de la base de données :
Avec sqlite3, nous accédons au contenu de la base :

L'objectif est de trouver le mot de passe de l'utilisateur rosa.


Mots de passe déchiffrés en MD5 :
rosa:63ed86ee9f624c7b14f1d4f43dc251a5 -> unicorniosrosados

Nous nous connectons ensuite via SSH :
Flag User.txt:

Vulnérabilité LFI http Python 3.9
Si l'on utilise curl pour afficher le contenu du port interne web 8080, on remarque qu'une version vulnérable de Python 3.9 est en cours d'exécution, précisément aiohttp/3.9.1.

Lister le contenu de /etc/passwd
Nous pouvons lister le contenu du fichier /etc/passwd en utilisant la commande suivante :

Accéder à la clé SSH privée de root
Étant donné que l'on peut parcourir les fichiers du système, nous allons maintenant tenter de récupérer la clé SSH privée de l'utilisateur root :

Flag root :)
Connexion SSH avec la clé récupérée
Une fois la clé récupérée, nous pouvons nous connecter en SSH à la machine cible en utilisant la commande suivante :

Mis à jour
Ce contenu vous a-t-il été utile ?