Hawk HackTheBox (Writeup)
Skills:
OpenSSL Cipher Brute Force and Decryption
Drupal Enumeration/Exploitation
H2 Database Exploitation
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 (21,22,80,5435,9092)

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" :

Port 21 - FTP
Nous nous connectons en tant qu'utilisateur anonymous et découvrons un fichier caché nommé .drupal.txt.enc.

Brute Force - Openssh (.enc)
L'extension .enc indique généralement un fichier chiffré (encrypted). Elle est utilisée pour signifier que le contenu du fichier a été protégé par un algorithme de chiffrement, rendant les données illisibles sans la clé ou le mot de passe approprié. Ces fichiers peuvent contenir n'importe quel type de données (texte, images, vidéos, etc.) et sont couramment utilisés pour sécuriser des informations sensibles.
Le fichier .enc est chiffré avec un algorithme AES-256-CBC et encodé en Base64.

Étape 1 : Décodage Base64

Étape 2 : Décryptage avec OpenSSL
Pour déchiffrer le fichier, nous avons besoin d'un mot de passe. Voici la commande pour tenter un décryptage manuel :

Étape 3 : Script d'automatisation pour brute force
Nous utilisons un script Bash pour tester une liste de mots de passe (exemple : rockyou.txt).
Résultat :
Le mot de passe trouvé est : friends

Message décrypté
Le fichier décrypté contient un nouveau mot de passe :
PencilKeyboardScanner123

Port 80 - HTTP
On observe que le port 80 contient un CMS Drupal de version 7.


Authentification - Accès avec mot de passe
On tente de se connecter avec le mot de passe PencilKeyboardScanner123 pour l'utilisateur admin et l'authentification réussit.

Reverse Shell - Drupal 7
Nous allons utiliser le script suivant pour exécuter des commandes sur un serveur Drupal de version inférieure à 7 (CVE-2018-7602) :
Cette commande permet d'exécuter la commande id sur le serveur.

Accès au serveur
Pour établir un accès au serveur, nous devons nous mettre en écoute sur le port 443 avec nc
Ensuite, on crée un fichier index.html avec le contenu suivant pour établir un reverse shell :
Serveur web et exécution de la commande Lance un serveur HTTP avec Python :
Puis, envoie la commande suivante pour télécharger et exécuter le script :

Traitement terminal Pour gérer le terminal, on utilise les commandes suivantes :
Flag user.txt :)

Élévation de privilèges
En explorant le répertoire web situé à /var/www/html, on remarque plusieurs fichiers de configuration. Parmi eux, un fichier intéressant est identifié :

Chemin : sites/default/settings.php
En examinant ce fichier, on trouve des informations sensibles:
Username: drupal
Password: drupal4hawk

Ces identifiants permettent de se connecter à la base de données MySQL. Pour cela, on utilise les commandes suivantes :

Après avoir saisi le mot de passe, on liste toutes les bases de données disponibles, et ensuite, on sélectionne la base de données associée à Drupal :
Une fois dans la base, on explore le contenu de la table users pour chercher des informations intéressantes :
Dans cette table, on trouve un mot de passe haché, associé à un utilisateur :

$S$DFw163ixD00W55hdCqtvCB13XOTLhZ0pt0FVpFy1Ntmdp5EAOX08
Brute Force John - Hash Password
Utiliser John pour casser le hash du mot de passe
Cependant, dans ce cas particulier, aucune correspondance n'a été trouvée dans le fichier de mots de passe rockyou.txt.
Escaping Python to Normal Bash
Nous avons accédé au serveur en tant qu'utilisateur daniel avec un mot de passe associé à la base de données (dans cet exemple, drupal4hawk). Voici la commande pour se connecter :
Mot de passe : drupal4hawk
Une fois connecté, nous sommes directement dans un interprète Python.

Pour revenir à un shell Bash normal, nous pouvons utiliser le module os de Python pour exécuter une commande Bash. Voici les étapes :
Importer le module
os:Exécuter un shell Bash :
Cela vous permettra d'accéder à un shell Bash normal depuis l'interprète Python.

Explotation H2 Database
Analyse des ports ouverts
Pour commencer, nous listons les ports ouverts en interne à l'aide de la commande suivante :
Nous identifions que le port 8082 est ouvert et héberge un service. En l'analysant, nous découvrons qu'il s'agit d'un CMS de base de données : H2 Database.

Pour accéder à ce service depuis notre machine, nous effectuons un port forwarding avec SSH, redirigeant le port interne 8082 vers le port 8082 de notre machine locale :

Port Forwarding
Pour accéder à ce service depuis notre machine, nous effectuons un port forwarding avec SSH, redirigeant le port interne 8082 vers le port 8082 de notre machine locale :
H2 Database:

Nous utilisons searchsploit pour rechercher des vulnérabilités connues associées à H2 Database :

Nous trouvons un exploit intéressant permettant l'exécution de commandes à distance :

Flag root.txt :)
Le script nous permet d'exécuter des commandes sur la machine cible. En naviguant dans le système, nous récupérons le flag root.txt. 🎉


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