Solution de crocobc pour Hello from the inside

web PHP bot

3 janvier 2025

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 :

  1. 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.

  2. 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 IP 127.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.

service

É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.

endpoint

É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.

flag

Résumé

  1. 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.
  2. Exploiter une mauvaise configuration d’Apache en accédant à /server-status.
  3. Identifier l’endpoint caché depuis les logs internes et l’utiliser pour récupérer le flag.