Cypher HackTheBox (WriteUp)
Skills:
Java .jar file reverse engineering with JD-GUI
Vulnerability analysis of custom Java code
Cypher injection in Neo4j
Remote Code Execution (RCE) through unsanitized input
Post-exploitation enumeration and credential reuse
Privilege escalation through misconfigured sudo permissions
Secure flag extraction and cleanup procedures
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:

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" :

On ajoute ensuite l'IP Ã notre fichier /etc/hosts :

Analyse Web - Port 80 (HTTP)

On utilise Gobuster pour énumérer les répertoires :

Dans le répertoire /testing, on trouve un fichier .jar. On l’extrait :

On observe la structure avec tree et on ouvre le .jar avec JD-GUI.


On découvre une commande vulnérable :

Vulnérabilité : l’URL n’est pas échappée, ce qui permet une injection de commandes shell.
Injection Neo4j Cypher
Un formulaire de login est vulnérable. Une erreur s’affiche lorsqu’on entre '.

On injecte un payload Cypher pour récupérer la version de Neo4j :

Sur notre serveur, on reçoit la requête :

RCE via appel à custom.getUrlStatusCode()
custom.getUrlStatusCode()
On place un reverse shell dans index.html :
On place un reverse shell dans index.html :
Utilisez l'injection conjointe pour appeler ce custom.getUrlStatusCode

Amélioration du shell :
Pivoting - User Graphasm
Dans /home/graphasm/, on trouve un fichier pwn.py contenant un mot de passe

cU4btyib.20xtCMCXkBmerhK
Réutilisation de mot de passe
Flag user.txt :)

Élévation de privilèges
Sudo - bbot (binary)
Vérification des droits sudo :
L’utilisateur peut exécuter /usr/local/bin/bbot en root.

Contenu de /usr/local/bin/bbot :

Exploitation :
Ce script transmet simplement les arguments à la fonction principale de bbot. Comme nous pouvons contrôler les arguments fournis, nous pouvons exploiter une fonctionnalité de bbot pour lire n’importe quel fichier — y compris ceux qui sont accessibles uniquement par l’utilisateur root.
Après avoir consulté l’aide ou la documentation d’utilisation de bbot, nous avons identifié des options permettant de spécifier un fichier cible ainsi qu’un répertoire de sortie :
Explication :
-t /root/root.txt: définit le fichier cible à traiter.-o /tmp/root: spécifie le répertoire de sortie (là où les résultats seront stockés).-d: active le mode débogage, au cas où des informations supplémentaires seraient nécessaires.
Comme le script s’exécute avec les privilèges root et qu’aucune validation des entrées n’est effectuée, cela nous permet de lire des fichiers arbitraires, y compris le fichier final contenant le flag root.


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