GoodGames 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 (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:

Recherche de répertoires :

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

on trouve un repertoire signup

Vulnérabilité Sql Injection:

En utilisant Burp Suite, on peut intercepter la requête nous permettant de tester l'injection SQL.

Injection SQL de Base:

Pour contourner l'authentification avec une injection simple, on utilise :

Ce type d'injection force la condition à être toujours vraie (1=1), permettant l'accès au panneau admin en contournant les contrôles d'identification.

Injection basée sur l'UNION

Avec une injection Union-Based SQL, on essaie de déterminer le nombre de colonnes pour structurer les requêtes de manière compatible avec la base de données. Exemple :

Le serveur retourne une réponse indiquant un "login successful," montrant qu'il y a 4 colonnes.

Lister les Bases de Données

Pour lister le nom de la base de données actuelle, on utilise :

Ensuite, pour obtenir toutes les bases de données disponibles :

Résultat : information_schema, main

Lister les Tables

Après avoir identifié la base main, on liste les tables de cette base pour explorer les structures stockées :

Tables trouvées : blog, blog_comments, users.

Lister les Colonnes d'une Table

Pour la table users, on liste les colonnes disponibles :

Colonnes trouvées : email, id, name, password.

Extraction des Données Utilisateur

On extrait ensuite les données de la table users :

USER: Admin

EMAIL: [email protected]

PASSWORD (hash): 2b22337f218b2d82dfc3b6f77e7cb8ec

Décryptage du Mot de Passe

On peut utiliser CrackStation pour décrypter le hash MD5 obtenu et récupérer le mot de passe en clair.

Vulnérabilité SSTI:

Accès à un Sous-domaine

Pour accéder à un sous-domaine admin découvert, ajoute-le dans le fichier /etc/hosts.

Enfin, avec les identifiants admin, on peut s’authentifier sur ce sous-domaine.

admin:superadministrator

Dans le sous-domaine, vous trouverez un onglet Settings où vous pouvez modifier les informations de l'utilisateur admin (nom complet, date de naissance et téléphone).

Si, dans le formulaire "nom complet", vous tentez d'exécuter une attaque SSTI, le serveur est vulnérable. Pour tester cela avec les {{ }}, essayons de voir s'il interprète le calcul :

Ensuite, nous allons exécuter des commandes (par exemple, id) :

On découvre qu'il est dans le groupe root.

Nous allons réaliser un reverse shell pour accéder au serveur

Nous nous mettons en écoute sur le port 443 sur notre machine d'attaque :

Flag : user.txt :)

Élévation de privilèges :

Une fois que vous avez accès au serveur Linux, voici les commandes à effectuer pour le traitement dans le terminal :

Cela permettra de travailler de manière beaucoup plus efficace et surtout plus confortable.

Docker Escape:

Nous observons que l’adresse IP n'est pas celle de la machine (IP machine : 10.10.11.130 ; IP conteneur Docker : 172.19.0.2).

Nous allons scanner les ports de manière manuelle, puisque nmap n'est pas installé sur la passerelle (172.19.0.1) :

Nous observons que le port 22 est ouvert (en interne), donc nous pouvons nous connecter par SSH.

Si nous essayons de nous connecter avec le compte root en utilisant le mot de passe superadministrator, nous ne pouvons pas nous connecter, mais avec augustus, nous réussissons à obtenir un shell.

Bash SUID depuis le Docker

Puisque dans le conteneur Docker, nous sommes root, nous allons copier le binaire bash depuis le host normal de la machine dans le répertoire home de augustus :

Depuis le root du Docker, nous allons autoriser le groupe root pour ce fichier bash et les permissions SUID afin qu'il s'exécute comme root :

Nous retournons sur le SSH et nous voyons :

-rwsrwxrwx 1 root root 1234376 Oct 28 11:35 bash

Obtention du flag root :)

./bash -p

Mis à jour

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