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

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

Découverte d’un site de contact :

Vérification des communications entre le serveur et le site : Nous avons trouvé une partie du site dédiée aux contacts. Nous vérifions si le serveur envoie des trames à ce site.

Réception d’une trame sur notre serveur web : Pour capturer cette trame, nous mettons en place un serveur HTTP simple avec Python :

Interception de la requête avec burpsuite : Nous interceptons la requête avec Burp Suite pour analyser les communications.

Possible SSRF:

Nous tentons de lister les services internes en utilisant une attaque SSRF, en modifiant le paramètre de requête :

Découverte des ports internes avec Intruder : Nous utilisons Burp Suite Intruder pour effectuer une attaque par force brute et découvrir les ports internes ouverts.

Filtrage des réponses : Nous filtrons les réponses en fonction de leur taille pour identifier celles qui sont pertinentes mais toutes sont les mêmes.

Vulnérabilité Wonder (CSRF): (XSS to RCE)

Recherche de répertoires : Nous utilisons Gobuster pour rechercher des répertoires sur le site :

Cela nous retourne le répertoire /themes avec un code de redirection 301.

Exploration du répertoire themes : Nous poursuivons la recherche en ajoutant le chemin découvert à l'URL et en explorant le répertoire /themes

Nous trouvons le sous-répertoire /bike.

Filtrage par extensions de fichiers : ous utilisons ffuf pour filtrer les fichiers avec certaines extensions (php, html, png, etc.) dans le répertoire /bike :

Cette commande nous permet de trouver un fichier nommé README.md

Nous trouvons un fichier README.md qui indique que le serveur utilise un thème appelé "WONDER", qui est un CMS.

En recherchant des vulnérabilités liées à ce CMS, nous découvrons une faille permettant l'exécution de code à distance (RCE) via une injection XSS.

Code JavaScript pour obtenir un shell : Le code JavaScript suivant permet de télécharger un fichier ZIP malveillant contenant un script de shell inversé, puis de l'exécuter sur le serveur :

Installation du script d'exploitation pour la vulnérabilité (CVE-2023-41425) :

Nous exécutons le script d'exploitation :

Le script ci-dessus envoie une requête à notre serveur sur le port 8000 via un fichier xss.js, nous accordant un accès RCE et le contrôle de la machine cible.

Étape finale :

Nous devons envoyer le lien XSS à l'administrateur via le formulaire de contact.php pour l'inciter à cliquer sur le lien malveillant :

Mise en écoute avec Netcat : Nous nous mettons à l'écoute sur le port 4444:

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èges:

En tant qu'utilisateur www-data, nous allons filtrer le contenu en utilisant la commande find pour rechercher uniquement les fichiers contenant le mot "password" dans le répertoire du serveur web /var/www/sea.

Nous trouvons un mot de passe chiffré dans le fichier database.js :

$2y$10$iOrk210RQSAzNCx6Vyq2X.aJ/D.GuE4jRIikYiWrD3TM/PjDnXm4q

Pour déchiffrer ce mot de passe, nous utilisons l'outil John the Ripper avec le fichier de dictionnaire rockyou.txt :

Le mot de passe déchiffré est mychemicalromance

Nous allons maintenant essayer de nous connecter avec les deux utilisateurs disponibles dans le système : "geo" et "amays".

Le mot de passe pour l'utilisateur amays est correct.

Flag user.txt

En analysant les communications du réseau interne, nous avons trouvé que le port 8080 était utilisé :

Nous allons donc rediriger le port du serveur 8080 vers notre machine attaquante via SSH en utilisant un renvoi de ports, depuis le port 8888 :

Une fois connecté, nous trouvons un panel de login.

Avec les identifiants de l'utilisateur amay : mychemicalromance, nous réussissons à nous connecter à un système de monitoring.

Nous pouvons observer les journaux de connexion de root.

En interceptant la requête avec BurpSuite, nous remarquons qu'elle affiche le contenu du fichier /var/log/apache2/access.log de manière plus structurée.

Ce fichier ne peut être ouvert que par l'utilisateur root.

Vulnérabilité (LFI - RCE) Log Poisoning:

Si nous essayons de lister un fichier comme /etc/passwd, par exemple :

Le fichier est listé :)

Nous allons ensuite essayer de lire le fichier contenant le flag root et nous observons qu'il est possible d'exécuter des commandes (comme id) :

Accès total (reverse shell):

Pour obtenir un reverse shell, nous exécutons la commande suivante :

Ensuite, nous nous mettons en écoute avec nc :

Flag root :)

Mis à jour

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