Haystack HackTheBox (Writeup)
Skills:
ElasticSearch Enumeration
Information Leakage
Kibana Enumeration
Kibana Exploitation (CVE-2018-17246)
Abusing Logstash (Privilege Escalation)
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 (9200)

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:

Analyse des Services Exposés
Port 80 - Fuite d'Information
Extraction des Métadonnées avec ExifTool

En analysant l'image trouvée sur le serveur avec strings, nous découvrons une chaîne encodée en base64 :
bGEgYWd1amEgZW4gZWwgcGFqYXIgZXMgImNsYXZlIg==

Une fois décodée, cette chaîne révèle le message suivant : "la aguja en el pajar es 'clave'".

ElasticSearch - Fuite d'Informations
Le port 9200 héberge ElasticSearch en version 6.4.2.


En accédant à l'URL /_cat/indices?, nous obtenons une liste d'indices avec leurs UUID. Pour extraire le contenu d'un indice, nous utilisons l'URL suivante :
http://haystack.htb:9200/<index>/_search?pretty=true&size=1000

Filtrage des Données avec Curl
En utilisant l'indice quotes et en filtrant sur le mot clé clave, nous trouvons des informations pertinentes :

Décodage des Chaînes Encodées en base64
Nous obtenons deux chaînes encodées en base64 qui, une fois décodées, révèlent les informations d'identification :

Utilisateur : security
Mot de Passe : spanish.is.key
Connexion SSH
Avec les identifiants récupérés, nous nous connectons à la machine cible via SSH et accédons à l'utilisateur :

Flag user.txt :)

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.
Élévation de privilège :
Kibana (Redirection de port)
Étape 1 : Identification des ports ouverts
Tout d'abord, nous observons les ports ouverts en interne en utilisant la commande suivante :
Nous remarquons que le port 5601 attire notre attention.

En effectuant une requête curl sur ce port, nous obtenons une page HTML de Kibana :

Étape 2 : Redirection de port pour l'accès à Kibana
Nous allons rediriger le port interne 5601 du serveur vers notre machine locale pour y accéder via notre navigateur. Cette redirection peut être réalisée via SSH avec la commande suivante :
Cela redirige le port local 5601 de la machine cible vers le port 5601 de notre propre machine, permettant un accès direct

Étape 3 : Vérification de la version de Kibana
En accédant à http://localhost:5601/api/status, nous observons le numéro de version de Kibana : 6.4.2. Cette version est vulnérable à une attaque Local File Inclusion (LFI), identifiée sous CVE-2018-17246.

Kibana Exploitation (CVE-2018-17246)
Étape 4 : Exploitation de la vulnérabilité
Pour exploiter cette vulnérabilité, nous allons créer un fichier JavaScript pour obtenir un shell inversé. Dans le répertoire /tmp de la machine cible, créez un fichier nommé rev.js avec le code suivant :
Ce script établira une connexion avec votre machine sur le port 443 pour ouvrir un shell.
Étape 5 : Redirection de flux vers le fichier
Ensuite, redirigez le flux vers le fichier /dev/shm/rev.js avec la commande suivante :
Étape 6 : Écoute sur le port pour le shell inversé
Sur votre machine, démarrez un écouteur sur le port 443 pour capter le shell inversé :
Une fois connecté, vous aurez un shell sur la machine cible, permettant une élévation de privilèges.

Abusing Logstash
On recherche tous les fichiers accessibles avec l'utilisateur kibana :

En accédant à Logstash, on découvre trois fichiers de configuration :
filter.confinput.confoutput.conf

En résumé, Logstash exécute une tâche cron qui vérifie toutes les 10 secondes si un fichier nommé logstash_* existe dans le répertoire /opt/kibana/. Si un fichier correspondant est trouvé et contient une commande avec un input spécifique, sous la forme :
"message" => "Ejecutar\scomando\s:\s+%{GREEDYDATA:comando}"

Pour exploiter cette vulnérabilité, on crée un fichier nommé logstash_exec dans le répertoire /opt/kibana/ avec le contenu suivant :
Ensuite, on écoute sur le port 4444, et on obtient un accès root.

Flag root :)


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