Objectif
Trouver le flag en interagissant uniquement avec le conteneur Docker via le port réseau exposé, sans bruteforce.
Analyse initiale
Le défi mentionne : “Déployé à la hâte sur un serveur HTTP Apache”, suggérant une mauvaise configuration potentielle.
Découverte initiale : Identification d’une faille SSRF
Lors des tests avec différentes valeurs pour le paramètre service
, on observe un comportement étrange qui permet de détecter une faille SSRF :
-
Test avec
service="127.0.0.1"
: Cette valeur renvoie un contenu spécifique, suggérant que l’application effectue une requête interne vers l’adresse IP locale. -
Test avec
service="http://127.0.0.1/"
: Les chemins complets comme celui-ci ne fonctionnent pas, ce qui confirme que l’application traite l’adresse IP127.0.0.1
comme un alias ou un chemin local, mais qu’elle ne permet pas d’utiliser des URLs externes directes.
Cette observation révèle que l’application est susceptible de traiter des requêtes internes de manière non sécurisée, ce qui ouvre la porte à une vulnérabilité de type SSRF (Server-Side Request Forgery). En exploitant cette faiblesse, un attaquant pourrait potentiellement manipuler les requêtes internes du serveur, accédant ainsi à des ressources internes ou à d’autres services de l’application.
Étape 1 : Exploitation de la configuration Apache
En exploitant l’indice sur le déploiement “à la hâte”, on teste l’accès à des fichiers et endpoints standards d’Apache via SSRF. En particulier :
service="127.0.0.1/server-status"
qui donne accès à la page server-status du serveur Apache.
Cette page, visible dans l’élément <pre>
du HTML retourné, expose les requêtes internes effectuées par le serveur.
Étape 2 : Identification de l’endpoint caché
En examinant les logs sur server-status
, on repére des requêtes internes pointant vers un endpoint spécifique :
/fcsc-secret-admin-page-5d7f93d6
. En testant ce chemin avec service="127.0.0.1/fcsc-secret-admin-page-5d7f93d6"
, on obtient le flag.
Résumé
- Comprendre que le champ
service
est traité comme un chemin interne, ce qui ouvre la porte à une exploitation de type SSRF (Server-Side Request Forgery), où des requêtes internes non sécurisées peuvent être manipulées. - Exploiter une mauvaise configuration d’Apache en accédant à
/server-status
. - Identifier l’endpoint caché depuis les logs internes et l’utiliser pour récupérer le flag.