
Analyse complète de test d'intrusion et détails d'exploitation pour Hack The Box - machine Enigma, couvrant l'énumération locale, l'injection de commande OliveTin CVE-2026-27626 et l'élévation de privilèges root
Enigma est une machine Linux de niveau intermédiaire hébergée sur Hack The Box. La méthodologie d'évaluation suit un cycle de vie standard de test d'intrusion : reconnaissance, énumération, accès initial via la collecte d'identifiants, énumération locale et élévation de privilèges root par le biais d'une vulnérabilité de couche de service (CVE-2026-27626 dans OliveTin). Ce write-up détaille l'analyse pas à pas des vecteurs, les outils utilisés, les stratégies d'exécution de code et les recommandations de remédiation nécessaires pour compromettre entièrement la cible et sécuriser le contrôle administratif.
Nmap)L'évaluation a commencé par un scan TCP SYN afin d'identifier les ports ouverts et les services en cours d'exécution sur l'hôte cible.
nmap -p- --min-rate=1000 -T4 <TARGET_IP>
Résultats du scan :
À l'aide d'outils de découverte de répertoires (gobuster / ffuf), nous avons analysé le service web sur le port 80 afin de découvrir des points de terminaison cachés, des portails administratifs ou des artefacts de configuration.
Grâce à une analyse détaillée des fichiers de l'application web et des partages NFS auxiliaires, nous avons découvert des identifiants de développeur valides.
harisbestfriendsAvec les identifiants découverts, nous nous sommes authentifiés auprès du service SSH afin d'établir un shell interactif à faibles privilèges sur le système cible :
ssh haris@<TARGET_IP>
haris@enigma:~$user.txt).Après avoir établi un shell au niveau utilisateur, nous avons examiné les ports en écoute locaux et les processus actifs afin d'identifier les surfaces d'attaque potentielles non exposées à l'extérieur :
ss -tulpn
Découverte clé :
127.0.0.1:1337 avec les privilèges root.Une inspection plus approfondie du fichier de configuration de l'application OliveTin (/opt/OliveTin/config.yaml) a révélé que les actions de sauvegarde de base de données étaient exécutées via un wrapper shell. Plus précisément, la configuration utilisait le paramètre db_pass au sein d'une chaîne de commande mysqldump :
shell: "mysqldump -u {{ db_user }} -p'{{ db_pass }}' {{ db_name }} > /opt/backups/backup.sql"
arguments:
- name: db_pass
type: password
Cette configuration introduit une vulnérabilité critique d'injection de commandes (CVE-2026-27626) car le paramètre db_pass est entouré de guillemets simples dans un contexte shell, mais ne nettoie pas correctement les entrées contenant des opérateurs de contrôle shell (par exemple, les points-virgules ;, les pipes | ou les backticks).
Étant donné que le service OliveTin vulnérable est strictement lié à 127.0.0.1:1337, les requêtes externes provenant de la machine attaquante Kali sont bloquées avec une erreur Connection refused. Pour interagir avec le service, nous avons établi un tunnel de redirection de port local via SSH :
ssh -L 1337:127.0.0.1:1337 haris@<TARGET_IP>
À l'aide d'un script d'exploitation Python ciblant le point de terminaison de l'API OliveTin (/api/olivetin.api.v1.OliveTinApiService/StartAction), nous avons injecté des commandes système arbitraires dans le vecteur de paramètre vulnérable.
En raison de la syntaxe shell stricte et des dépendances de répertoire dans le wrapper de commande mysqldump d'origine, la création directe de fichiers pouvait parfois entraîner des erreurs de statut de sortie (telles que des répertoires cibles manquants ou des contraintes de permissions). En élaborant des chaînes d'exécution précises ou en interrogeant directement le système de fichiers via la vulnérabilité de l'API, nous avons contourné les obstacles d'exécution.
Exécution de la charge utile de commande via l'interface d'exploitation :
python3 CVE-2026.27626.py -u http://127.0.0.1 -x "cat /root/root.txt"
Sortie d'exécution :
[+] Execution ID: 7fd15259-3996-4e03-9ebd-329034ee4e0d
======================================================================
Command Output
======================================================================
exit status 127
Usage: mysqldump [OPTIONS] database [tables]
...
ae9306f5690c4812c6f9445027d0d060
sh: 1: : Permission denied
======================================================================
Le flag root a été extrait avec succès directement via le flux de sortie de la commande.
ae9306f5690c4812c6f9445027d0d060/root/.ssh/authorized_keys via le vecteur d'injection de commandes, ce qui accorde un accès terminal administratif transparent.root, sauf si cela est absolument nécessaire. Exécuter les services sous des comptes de service dédiés avec des permissions minimales.