Devzat HackTheBox (Writeup)

Reconaissance:

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,80,8000)

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:

Port 80

En utilisant whatweb, nous trouvons un email associé au site : [email protected].

L'application nous informe également que nous pouvons utiliser le port 8000 pour se connecter via SSH pour "chater" :

Port 8000:

Nous essayons de nous connecter, mais un problème survient car une clé SSH est requise :

Forcer temporairement l'utilisation de SSH-RSA : Nous spécifions le type de clé SSH à utiliser pour cette session avec l'option suivante :

Projet Devzat (Chat SSH) :

Devzat est un serveur SSH personnalisé permettant de se connecter à un chat au lieu d'une invite de commande. Comme des applications SSH sont disponibles sur toutes les plateformes (y compris sur les téléphones), vous pouvez vous connecter à Devzat depuis n'importe quel appareil.

Voici une liste des commandes que l'on peut exécuter dans ce chat :

Fuzzing des répertoires :

Nous utilisons gobuster pour énumérer les répertoires sur le site :

Aucun résultat intéressant n'a été trouvé.

Fuzzing des sous-domaines :

Nous effectuons une recherche des sous-domaines avec gobuster :

Nous découvrons le sous-domaine pets.devzat.htb et l'ajoutons au fichier /etc/hosts.

Vulnérabilité (RCE) JSON :

Nous avons la possibilité d'ajouter des "pets" avec leur espèce, ce qui permet une injection JSON.

Nous interceptez les requêtes avec Burp Suite et tentons de manipuler la requête en ajoutant une entrée avec le nom et l'espèce :

Cette entrée est interprétée, ce qui permet une injection.

Nous mettons en écoute les traces ICMP pour observer les communications et tester des injections de commandes :

Nous recevons un ping en retour, ce qui confirme la possibilité d'une exécution de commande à distance.

Ensuite, nous envoyons une requête avec curl vers notre serveur Python et recevons également une requête, ce qui confirme la vulnérabilité d'exécution de code à distance.

Reverse Shell

Nous tentons de créer un reverse shell :

Cependant, une erreur de sortie se produit.

Solution à l'erreur (reverse shell) : Pour résoudre cette erreur, nous créons un fichier HTML contenant le reverse shell, que nous encodons en base64 :

Nous convertissons ce fichier en base64 :

Dans la requête, nous exécutons l'echo de la chaîne base64 encodée et la décodons avant d'exécuter le shell :

Une fois encore, nous mettons en écoute sur le port 443 et obtenons un shell inversé.

Traitement du terminal :

Pour stabiliser notre session, nous utilisons les commandes suivantes :

Élévation de Privilège:

Nous constatons qu'une élévation de privilèges est nécessaire. Nous devons effectuer un pivoting pour obtenir l'accès au compte de l'utilisateur catherine.

Identification des Ports Ouverts

Tout d'abord, nous observons les ports ouverts en interne en utilisant la commande suivante :

Les ports ouverts sont :

  • 8086

  • 8443

  • 5000

Redirection de Ports (SSH)

Nous redirigeons les ports internes vers notre machine d'attaque en utilisant la clé privée de l'utilisateur et en appliquant les bonnes permissions :

Nous utilisons ensuite nmap pour scanner les ports redirigés :

Port 5000:

Nous constatons que ce port est lié au même service que celui trouvé sur le port 8000, ce qui ne nous permet pas d'exploiter davantage cette porte.

Port 8086 (InfluxDB)

Le service sur le port 8086 est InfluxDB, version 1.7.5. Nous identifions une vulnérabilité de type RCE (Remote Code Execution) dans InfluxDB :

Vulnérabilité : CVE-2019-20933

Cette vulnérabilité permet de contourner l'authentification en exploitant un jeton JWT dont le SharedSecret est vide (aka shared secret), ce qui nous donne accès à la base de données.

Accès à la Base de Données

Une fois connecté à InfluxDB, nous listons les bases de données disponibles:

Nous sélectionnons la base devzat et explorons les données des utilisateurs. Nous commençons par lister les "mesures" (tables) :

La table user contient des informations utiles. Pour explorer les colonnes de cette mesure, nous exécutons :

Nous affichons ensuite les 10 premiers résultats pour la table user :

password

username

WillyWonka2021

wilhelm

woBeeYareedahc7Oogeephies7Aiseci

catherine

RoyalQueenBee$

charles

Le mot de passe de l'utilisateur catherine est woBeeYareedahc7Oogeephies7Aiseci, ce qui nous permet de récupérer le flag utilisateur.

Flag user.txt :)

on reusis acceder et pivoter en tant que catherine

Port 8443 (Devzat - Production)

Le port 8443 est dédié à une instance de Devzat en production. Nous constatons qu'un paramètre file permet de lister tous les fichiers du système en tant que root. Cependant, l'accès à cette fonctionnalité est protégé par un mot de passe.

Nous essayons d'utiliser le mot de passe de catherine, mais cela échoue. Nous devons maintenant rechercher des fichiers que catherine peut lire sur le système.

Recherche de Fichiers Accessibles par Catherine

Nous utilisons la commande suivante pour rechercher tous les fichiers lisibles par catherine :

Nous trouvons deux fichiers .zip de sauvegarde :

  • /var/backups/devzat-main.zip

  • /var/backups/devzat-dev.zip

Nous téléchargeons le fichier de sauvegarde devzat-dev.zip et filtrons son contenu à la recherche de mots de passe. Nous trouvons un mot de passe utile : CeilingCatStillAThingIn2021?.

Nous tentons ensuite d'utiliser ce mot de passe pour accéder au fichier /etc/shadow via le paramètre file :

Bien que le mot de passe soit correct, un path traversal est nécessaire pour obtenir un accès complet. Nous utilisons la commande suivante pour naviguer dans le système de fichiers :

Nous réussissons à afficher le fichier /etc/shadow en tant que root.

Accès SSH en tant que Root

Enfin, nous utilisons un path traversal supplémentaire pour accéder à la clé SSH de root :

Nous téléchargeons la clé SSH et nous connectons en tant que root.

Flag root.txt :)

Mis à jour

Ce contenu vous a-t-il été utile ?