Hawk 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.

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 :

  1. Importer le module os :

  2. 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 ?