
Briefing, très concis, du challenge (lui-même concis) :
Enumerate and root the box attached to this task. Can you discover the source of the disruption and leverage it to take control?
Reconnaissance (2 minutes)
On commence par un scan des ports via le légendaire nmap.

Explication sur la commande :
- -sS : On souhaite faire un TCP SYN (Stealth) scan (ou half open scan car on ne réalise pas l’intégralité du 3-way handshake TCP).
- -A : Aggressive scan options = active la détection d’OS (-O) , le scan de version (-sV), utilisation des scripts par défaut (-sC) et réalise un traceroute de la cible (–traceroute).
- -Pn : Considérer tous les hôtes comme étant connectés (saute l’étape de découverte des hôtes).
- -p- : Scan l’intégralité des ports possibles.
- -T4 : Choisit la « politique de temporisation » 4 (la plus rapide étant la 5).
- -oA : Permet de sauver dans « tous » les formats le résultat du scan (bonne pratique permettant de conserver des traces de nos actions)
- format « standard » nmap = out.nmap
- format « standard » nmap « grepable » = out.gnmap
- format XML : out.xml
On trouve ici 2 ports ouvert :
- le port 22 permettant l’accès via SSH, avec un server OpenSSH en version 7.6p1.
- le port 10000 en écoute avec un serveur MiniServ (Webmin) en version 1.890.

Exploitation (5 minutes)
Après quelques recherches sur le web concernant l’application Webmin dans sa version 1.890, je tombe rapidement sur le repository suivant : https://github.com/n0obit4/Webmin_1.890-POC

Je clone le repository car il semble ĂŞtre une piste plus qu’intĂ©ressante.

Je lance alors le script python fourni pour vérifier son bon fonctionnement.

Le script semble fonctionner Ă merveille !
Post exploitation (10 minutes)
Après divers essais inutiles de me crĂ©er un reverse shell, je me rend compte que je suis allĂ© un peu vite, et qu’en lisant un peu mieux la CVE et l’exploit utilisĂ©, on exĂ©cute des commandes en tant que root, pas besoin de reverse shell alors pour rĂ©cupĂ©rer mes flags …
A l’aide de l’exploit prĂ©cĂ©demment rĂ©cupĂ©rĂ© sur GitHub, je parcours d’abord le /home.

Je trouve alors le dossier personnel de l’utilisateur dark, et je m’empresse alors de lister ce rĂ©pertoire …

… dans lequel on trouve … le flag user !

Par ici le flag utilisateur découvert :
THM{SUPPLY_CHAIN_COMPROMISE}
On réalise la même gymnastique afin de trouver le flag root.
On commence par lister le dossier /root puisque toutes les commandes exécutées le sont avec les droits root.

On trouve un fichier des plus intéressant, qui semble nous indiquer que nous sommes proches du but, on affiche le contenu de ce fichier root.txt.

Et par lĂ le flag root :
THM{UPDATE_YOUR_INSTALL}
ChaĂ®ne d’attaque
| Étape | Technique MITRE ATT&CK (ID) | Nom technique (anglais) | Explication / application au challenge |
|---|---|---|---|
| Scan Nmap (ports et version) | T1595 (Reconnaissance) / T1595.002 | Active Scanning / Scanning IPs, Ports | Scan actif pour trouver ports ouverts et versions (nmap -sS -A -p- -Pn). |
| DĂ©couverte de services (Webmin 1.890) | T1046 | Network Service Discovery | Identification du service Webmin/MiniServ sur le port 10000 et d’OpenSSH sur 22. |
| Recherche d’exploit public / ciblage de service Web | T1190 | Exploit Public-Facing Application | Utilisation d’un exploit public (CVE-2019-15107) ciblant l’application Webmin exposĂ©e. |
| ExĂ©cution de commandes via l’exploit (RCE) | T1059 | Command and Scripting Interpreter | Commandes shell exĂ©cutĂ©es sur la machine cible par le vecteur RCE fourni par l’exploit. |
| Obtenir contexte root directement via le service vulnĂ©rable | T1068 (ou T1190 selon perspective) | Exploitation for Privilege Escalation (ou RCE via service) | L’exploit permet exĂ©cution en tant que root (pas d’Ă©lĂ©vation additionnelle nĂ©cessaire). |
| Exploration des fichiers locaux | T1083 | File and Directory Discovery | Listing de /home puis /home/dark et /root pour trouver les fichiers d’intĂ©rĂŞt. |
| Collecte des preuves/flags (lecture) | T1005 | Data from Local System | Lecture des fichiers user.txt et root.txt (récupération de données locales). |
Remarque : l’Ă©tape « exploitation » est principalement couverte par T1190 (Exploit Public‑Facing Application) — ici l’exploit aboutit Ă une RCE avec privilèges root, situation qui peut aussi ĂŞtre dĂ©crite via T1068 (Exploitation pour l’escalade) si on insiste sur l’obtention de privilèges Ă©levĂ©s.
Synthèse de la chaĂ®ne d’attaque :
- Reconnaissance : scan complet (
nmap -sS -A -Pn -p-) → découverte de Webmin/MiniServ 1.890 sur le port 10000 et OpenSSH 7.6p1 sur le port 22. - Recherche d’un exploit public pour Webmin 1.890 (CVE‑2019‑15107) et clonage du PoC.
- Exploitation : exĂ©cution du script PoC → Remote Code Execution sans authentification (RCE). L’exploit permet d’exĂ©cuter des commandes en tant que root.
- Post compromission : listing
/homeet/root→ lecture deuser.txtetroot.txt. - Conclusion : accès root obtenu sans Ă©lĂ©vation additionnelle — montrant l’impact critique d’un service public vulnĂ©rable.

Retour d’expĂ©rience
Ce challenge, nettement plus simple que les derniers que j’ai pu rĂ©alisĂ©, ne m’a quand mĂŞme par Ă©pargnĂ©.
MalgrĂ© une facilitĂ© annoncĂ©e, je me suis quand mĂŞme de nouveau retrouvĂ© piĂ©gĂ© par mon impatience, qui m’a conduite Ă chercher lĂ oĂą il n’en Ă©tait nul besoin.
Cette recherche de reverse shell (inutile) m’a pris moins d’une dizaine de minutes, mais c’est rageant de voir que cette perte de temps est due Ă une prĂ©cipitation de ma part qui m’a emmenĂ© Ă nĂ©gliger certaines informations, et dans les mĂ©tiers de la cybersĂ©curitĂ©, la patience est plus qu’une qualitĂ©, c’est une nĂ©cessitĂ© afin d’Ă©viter des incomprĂ©hensions et des erreurs pouvant ĂŞtre très graves.
Conclusion
Une room rapidement terminée (20 minutes douche comprise !).
Ici pas de recherche interminable, de dĂ©couverte technique, ni d’incantations spirituelles n’ont Ă©tĂ© nĂ©cessaire.
Un cas d’Ă©cole, on scan, on trouve un service avec une version douteuse, on trouve un exploit directement utilisable et on obtient une RCE root sans authentification mĂŞme pas besoin de recourir Ă de l’Ă©lĂ©vation de privilèges.
Un cas d’Ă©cole oui, mais un cas dĂ©sastreux en production, et pourtant, Ă l’heure oĂą j’Ă©cris ces lignes, une simple recherche sur Shodan m’indique que près de 1500 IPs publiques exposent un service MiniServ en version 1.890.
