Code 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,5000)

Exploitation SSTI – Python Code Editor

Un éditeur de code Python est découvert sur le port 5000. Lors de tentatives d’injection classiques (import os, exec, etc.), des erreurs sont générées.

Pour contourner les restrictions, on utilise une boucle pour identifier une classe permettant l'accès aux fonctions intégrées (__builtins__) :

Cette boucle Python tente d'exploiter une injection de template côté serveur (SSTI) en cherchant parmi les sous-classes des objets de base de Python (object) une qui donne accès à l’environnement global (__globals__) de sa méthode __init__. À chaque itération, elle tente de récupérer le dictionnaire des fonctions intégrées (__builtins__) en reconstruisant son nom pour éviter d’être détecté facilement. Si l’objet obtenu contient la fonction eval (très dangereuse car elle permet d’exécuter du code arbitraire), alors l’indice de la classe est affiché. Ce code est souvent utilisé pour localiser une classe qui permet d’accéder à des fonctions critiques comme eval, exec, open, etc., dans le but d’en abuser.

Lecture de /etc/passwd

Une fois l’objet contenant eval identifié, nous exécutons :

Cela révèle deux utilisateurs : martin et production.

Reverse Shell

Mise en écoute sur le port 443 :

Script de reverse shell :

Création d’un fichier index.html contenant :

Lancement d’un serveur web :

Injection du payload :

Traitement du terminal :

Flag user.txt :)

Élévation de privilèges

Accès SSH avec l'utilisateur martin

Nous découvrons un fichier database.db. Une inspection via SQLite nous révèle deux utilisateurs (development, martin) avec des hashs de mots de passe.

Users
hashs

development

759b74ce43947f5f4c91aeddc3e5bad3

martin

3de6f30c4a09c27fc71932bfc68474be

Crack des mots de passe avec CrackStation, puis connexion :

Users
hashs

development

development

martin

nafeelswordsmaster

Sudo - backy.sh (script)

Nous apprenons que martin peut exécuter /usr/bin/backy.sh en tant que root.

Le script vérifie :

  • Que le fichier JSON donné existe,

  • Que chaque chemin dans directories_to_archive est sous /var/ ou /home/,

  • Supprime les séquences ../ via jq.

Contournement :

On configure un fichier pwned.json :

Exécution :

Décompression :

Flag root.txt :)

Mis à jour

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