Stratosphere 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 (22,80,8080)

Utilisation de la fonction extractPorts pour afficher de manière synthétique les ports ouverts et les copier dans le presse-papiers.

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"

Exploration des services web (Ports 80 et 8080)

Les ports 80 et 8080 hébergent le même site web.

Fuzzing avec Gobuster

Nous lançons Gobuster pour rechercher des répertoires intéressants

Nous découvrons les routes suivantes :

  • /manager - Interface Tomcat Manager

  • /monitoring - Section de monitoring

Manager - Tomcat :

Monitoring:

Apache Struts Exploitation (CVE-2017-5638)

Exploration du répertoire Monitoring

En tentant de nous inscrire, nous obtenons un message d'erreur. Nous observons également une extension .action, indiquant potentiellement une application basée sur Apache Struts

Nous utilisons struts-pwn.py pour tester l'exécution de commandes à distance :

La commande fonctionne, confirmant la vulnérabilité.

Shell inversé

  1. Mise en écoute avec Netcat :

  1. Création d'un fichier index.html contenant notre reverse shell :

  1. Hébergement du fichier avec un serveur web Python :

  1. Exécution du reverse shell via l’exploit :

Malheureusement, cette approche échoue.

Extraction d'informations sensibles

Nous listons les fichiers sur le serveur :

Nous découvrons un fichier db_connect. En l'affichant, nous obtenons des identifiants :

Les informations récupérées des identifant de mysql :

  • user: ssn_admin / admin

  • pass=AWs64@on*& / admin

Extraction info - mysqlshow

Enumération des bases de données

Nous utilisons mysqlshow pour lister les bases accessibles avec l'utilisateur admin en exploitant une vulnérabilité Struts via struts-pwn.py :

Cela nous permet d'identifier la base de données users.

Enumération des tables

Ensuite, nous listons les tables de la base users :

Enumération des colonnes et extraction des identifiants

Nous listons maintenant les colonnes de la table accounts et tentons d'extraire son contenu

Nous obtenons les informations suivantes :

  • Nom d'utilisateur : richard

  • Mot de passe : 9tc*rhKuG5TyXvUJOrE^5CK7k

Nous utilisons les informations trouvées pour nous connecter en SSH sur la machine cible :

Flag user.txt :)

Élévation de privilèges

Python Library Hijacking Privilege Escalation

On commence par exécuter la commande suivante pour lister les droits sudo :

On remarque que nous avons la permission d'exécuter un script Python en tant que root :

En analysant le script /home/richard/test.py, on observe qu'il importe un module sans spécifier son chemin absolu, par exemple :

Ensuite, nous exécutons le script en tant que root :

  • Une fois le script lancé, notre version malveillante de hashlib.py est chargée, exécutant ainsi un shell avec les privilèges root.

Flag root.txt :)

Mis à jour

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