Code HackTheBox (WriteUp)
Skills:
SSTI Exploit – Python Code Editor
SQLite Database Extraction & Hash Cracking
backy.sh Bypass via Path Manipulation [Privilege Escalation]
Tar Archive Extraction from Root Directory
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 fonctioneval(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 commeeval,exec,open, etc., dans le but d’en abuser.

Lecture de /etc/passwd
/etc/passwdUne 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
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.
development
759b74ce43947f5f4c91aeddc3e5bad3
martin
3de6f30c4a09c27fc71932bfc68474be

Crack des mots de passe avec CrackStation, puis connexion :
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_archiveest sous/var/ou/home/,Supprime les séquences
../viajq.
Contournement :
On configure un fichier pwned.json :
Exécution :

Décompression :
Flag root.txt :)


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