SolidState 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 (22,25,80,110,119,4555)

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 80

Aucune information intéressante n'est trouvée sur le port 80.

JAMES Remote Administration

Port 119 - NNTP

Le port 119 utilise le service NNTP (Network News Transfer Protocol). Le serveur exécute une instance d'Apache James, un serveur de messagerie et de nouvelles. Nous nous connectons avec netcat, mais aucune information pertinente n'est trouvée.

Port 4555 - Remote Administration Tool

Dans le contexte de l'administration à distance, il peut être exploité pour accéder à des panneaux de contrôle ou pour interagir avec des services à distance sur la machine cible. Il est important de le scanner pour vérifier s'il est ouvert et quel service il héberge.

Nous tentons de nous connecter au panneau d'administration James via Telnet :

Après avoir recherché les identifiants par défaut, nous trouvons :

  • ID : root

  • Password : root

Nous nous connectons avec succès et accédons au panneau d'administration de James. Nous avons la possibilité de lister les utilisateurs avec la commande listusers, ce qui nous permet de découvrir 5 utilisateurs :

  • user: james

  • user: thomas

  • user: john

  • user: mindy

  • user: mailadmin

Nous pouvons modifier les mots de passe des utilisateurs avec la commande setpassword pour les connecter au client de messagerie sur le port 110. Nous procédons à cette modification pour tous les utilisateurs :

Port 110 - POP3

Le port 110 est le port standard utilisé pour le protocole POP3 (Post Office Protocol version 3). Ce protocole est utilisé par les clients de messagerie pour récupérer les emails depuis un serveur. Lorsqu'un utilisateur se connecte à un serveur POP3 via ce port, il peut télécharger ses messages.

Nous nous connectons maintenant au client POP3 via Telnet :

Pour nous connecter, nous utilisons les commandes suivantes :

Nous listons les messages avec la commande list.

Nous observons qu'il n'y a aucun message dans les boîtes de james et thomas.

Cependant, l'utilisateur john a un message que nous récupérons avec la commande retr 1. Le message contient le texte suivant :

John,

Pouvez-vous restreindre l'accès de Mindy jusqu'à ce qu'elle soit autorisée à rejoindre le programme ? Assurez-vous également de lui envoyer un mot de passe temporaire pour qu'elle puisse se connecter à ses comptes.

Merci d'avance.

Cordialement, James

Cela suggère que l'utilisateur mindy possède des identifiants dans sa boîte mail. En effet, nous trouvons les informations suivantes :

  • Username : mindy

  • Password : P@55W0rd1!2@

Nous utilisons ces identifiants pour nous connecter via SSH et obtenir le flag user.txt.

Flag user.txt :)

Élévation de Privilège :

Escape de Rbash vers Bash :

L'utilisateur mindy utilise actuellement un shell rbash qui limite l'exécution de nombreuses commandes.

Pour contourner cette restriction, nous utilisons la commande suivante lors de la connexion SSH pour obtenir un shell Bash :

Nous utilisons ensuite les commandes suivantes pour traiter le terminal et obtenir un shell complet :

Tâches Cron - Script Modifié (Python) :

Nous créons un script Bash pour analyser les processus en cours et détecter les tâches cron exécutées sur la machine cible :

En exécutant ce script, nous remarquons que l'utilisateur root est en train d'exécuter un script Python situé dans le répertoire /opt/tmp.py.

Nous avons la possibilité de modifier ce script Python.

Nous le modifions pour ajouter la commande permettant de définir un setuid sur le binaire /bin/bash, ce qui nous permettra d'exécuter un shell Bash avec les privilèges de root :

Après avoir modifié le script, nous attendons environ une minute pour que la tâche cron s'exécute.

Une fois la tâche cron exécutée, nous pouvons obtenir un shell Bash avec les privilèges root en exécutant la commande suivante :

Flag root.txt :)

Mis à jour

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