Editorial HackTheBox (Writeup)
Skills:
SSRF
Git Log
Git Python
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 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" :

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


Vulnérabilité SSRF:
Le bouton "Parcourir" nous permet de télécharger un fichier supposé être une image représentant la couverture d'un livre. Tandis que le champ de texte "URL de couverture liée à votre livre" permet de saisir une URL afin qu'elle soit consultée par le service et qu'une image puisse être téléchargée.

Ouverture de BurpSuite :
Lorsqu'une image est téléchargée sur le serveur, un lien vers son emplacement de stockage est fourni.

Nous procédons ensuite à une attaque par force brute sur les 65 535 ports et constatons que seul le port 5000 renvoie une réponse différente.

En vérifiant le contenu du port interne 5000, nous découvrons qu'il permet de télécharger un fichier.

Ce fichier, au format JSON, répertorie des API internes avec leurs routes associées. Parmi elles, la route message/authors semble particulièrement critique.

Avec BurpSuite, nous accédons donc au fichier via le port 5000 à l'adresse suivante :


Dans ce fichier, nous trouvons également un utilisateur et un mot de passe en clair dev:dev080217_devAPI!@

Nous tentons alors de nous connecter en SSH via le port 22, qui est bien ouvert, et réussissons à obtenir le flag utilisateur.

Élévation de privilèges:
Après avoir accédé au serveur Linux, il est recommandé d'exécuter les commandes suivantes dans le terminal pour optimiser l'efficacité et le confort de travail :
En naviguant vers la racine du système, on constate la présence de deux utilisateurs : dev et prod.

L'utilisateur dev possède deux dossiers visibles et un dossier caché nommé "git". En exécutant la commande git log, on observe deux commits distincts.


Parmi ces commits, le mot de passe de l'utilisateur prod apparaît en clair : prod:080217_Producti0n_2023!@.

Nous nous connectons ensuite via SSH en tant qu'utilisateur prod.

Sudoers:
En exécutant la commande sudo -l, on découvre que nous avons la possibilité d'exécuter un script en tant que root.

Une version vulnérable de la bibliothèque Git, identifiée par la fonction clone_from, est présente. En affichant la liste des packages Python avec pip3 list, on remarque que GitPython 3.1.29 est installé, une version connue pour la vulnérabilité CVE-2022-24439, qui permet l'exécution de code arbitraire. Cette faille peut être exploitée ainsi :

Nous allons créer un script d'exploit dans le répertoire temporaire pour obtenir un reverse shell :

Ensuite, sur notre machine, nous écoutons sur le port 4444 à l'aide de netcat

Enfin, nous exécutons le binaire avec sudo, en y ajoutant notre payload:
Flag root : )


Mis à jour
Ce contenu vous a-t-il été utile ?