Knockin' on Heaven's Door - InterIUT CTF 2026 🇫🇷
Writeups pour le challenge Knockin' on Heaven's Door de difficulté Medium que j'ai créé pour l'InterIUT 2026
Author : Math-X
Un membre de Null-Syndicate s'est fait capturer.
Avant de se faire choper, il a réussi à transmettre une information cruciale : un service interne vulnérable serait exposé sur l'infrastructure de MilSec**.
Cependant l'accès nécessite une autorisation générée par la plateforme de ticketing SaaS de HelixGate
Les hackers de GhostSurface espèrent y trouver des informations internes critiques sur MilSec.
Description
Vous avez accès à la plateforme de ticketing HelixGate utilisée par MilSec pour ses échanges avec le support de sa DSI.
URL : http://<host>:5001
Actuator (domaine local) : http://actuator.milsec.lan:8080/actuator
Étape 1 — IDOR sur HelixGate
Créez un compte sur la plateforme HelixGate et connectez-vous. Votre dashboard affiche vos propres tickets. Énumérez les IDs avec un script ou l'Intruder de Burp :
GET /tickets/1
GET /tickets/2
...
GET /tickets/100
Le challenge contient ~100 tickets seedés avec 2 tickets sensibles placés à des indices aléatoires :
Vuln :
/tickets/<id>ne filtre pas paruser_idon a donc une IDOR classique.
Il suffit alors d'énumérer les identifiants de tickets avec l'intruder de Burp Suite et de trier par taille les réponses on découvre alors 2 tickets intéressants :
[INTERNE][SYSADMIN] Incident connexion bastion SSH MilSec,
Bonjour support,
Je suis Adrien Morel, administrateur de l'actuator sur le composant FO-500-Ticketing au sein de MilSec,
et je rencontre un problème de connexion
au bastion SSH interne.
Utilisateur attendu : milsec-agent
Erreur observée : Permission denied (publickey,keyboard-interactive).
Pouvez-vous vérifier la rotation des clés autorisées côté serveur ?
Merci,
Equipe SysAdmin MilSec,
On apprend par ce ticket qu'un serveur ssh est exposé, qu'une clé SSH a été utilisé pour se connecter avec l'utilisateur milsec-agent
[INTERNE] Accès service monitoring Spring Boot - MilSec,
Bonjour
Comme convenu avec l'équipe infrastructure, voici les informations d'accès
au service de monitoring de la plateforme de ticketing déployé sur notre infrastructure.
Token d'authentification : Bearer mls-9e7f3a2c-4b1d-8e0f-5a6c-3b2d9e8f7a1c
CONFIDENTIEL — Ne pas transmettre hors périmètre MilSec
Cordialement,Support HelixGate
On obtient ainsi le token Bearer pour accéder à l'actuator et au endpoint /heapdump !
Avec ces 2 informations on comprends plus ou moins rapidement qu'il faut dump une capture mémoire de l'application via l'actuator pour y retrouver la clé, en effet :
Spring Boot Actuator ajoute à chaque microservice un ensemble de fonctionnalités permettant de débugger et de surveiller ceux-ci. En gros c'est un service de debug Java.
Dans ce service plusieurs endpoint permettants aux dev de debugger une app sont accessibles, dont un en particulier /heapdum.
Définition de /heapdump dans la doc springboot :
The heapdump endpoint provides a heap dump from the application’s JVM.
Retrieving the Heap Dump
To retrieve the heap dump, make a GET request to /actuator/heapdump. The response is binary data and can be large. Its format depends upon the JVM on which the application is running. When running on a HotSpot JVM the format is HPROF and on OpenJ9 it is PHD. Typically, you should save the response to disk for subsequent analysis. When using curl, this can be achieved by using the -O option, as shown in the following example:
Étape 2 — Spring Boot Actuator Heapdump
L'actuator est accessible via le domaine local :
http://localhost:4444/actuator
On repère que le endpoint /heapdump de l'actuator est exposé on peut donc récupérer un dump de la heap en format hprof (format de capture mémoire java).
http://localhost:4444/actuator/heapdump
Étape 3 — Extraction de la clé SSH
Ouvrez le .hprof dans un analyseur de heap (Eclipse MAT, VisualVM) ou
faites des strings comme un batard jusqu'à trouver le bon pattern :
strings heapdump.hprof | grep -A 50 "BEGIN OPENSSH PRIVATE KEY"
Sauvegardez la clé dans un fichier et corrigez les permissions :
chmod 600 ctf_key
Étape 4 — Shell SSH et flag
ssh -i ctf_key -p 2222 milsec-agent@ssh.milsec.lan
cat flag.txt
GG vous savez maintenant comment faire fermer un service facilement au sein d'une ESN lol.