
Une preuve de concept de la CVE traefik pour comprendre l'impact
Bienvenue dans le défi Capture the Flag (CTF) de Shadow Corp ! Ce défi mettra à l'épreuve vos compétences en matière d'identification et d'exploitation de vulnérabilités liées aux en-têtes de sécurité et au comportement des proxies HTTP. Votre mission est de contourner les protections et de découvrir les secrets cachés dans l'application web de Shadow Corp.
Vous avez découvert l'interface web publique de Shadow Corp, une organisation notoire impliquée dans l'espionnage cybernétique clandestin. Des rumeurs disent qu'ils ont sécurisé un point d'accès protégé que seuls les initiés de confiance peuvent atteindre. Cependant, des murmures suggèrent qu'avec les bonnes techniques, vous pouvez tromper le système pour révéler ce point d'accès caché et exposer les secrets de Shadow Corp.
Votre tâche : accéder au point d'accès protégé et récupérer le drapeau caché !
Ce CTF peut être exécuté localement, et vous devrez installer et configurer l'application web.
docker compose est requis pour exécuter cette application curl est recommandé pour interroger et tester les points d'accès.
Clonez le dépôt et naviguez vers le répertoire du projet :
cd traefik-CVE-2024-45410-poc
Exécutez le CTF
docker compose up
Votre objectif principal est d'accéder au point d'accès /protected et de récupérer le drapeau secret. Cependant, vous remarquerez que l'accès direct est bloqué à moins que certaines conditions ne soient remplies. Le système vérifie les sources de confiance en validant l'en-tête X-Forwarded-Host.
L'application est conçue pour n'autoriser l'accès qu'à partir de localhost (127.0.0.1). Cependant, si vous inspectez attentivement les en-têtes HTTP, vous pourriez découvrir un moyen de "tromper" le serveur en lui faisant croire que vous êtes une source de confiance. Examinez les en-têtes de proxy HTTP et comment ils peuvent être manipulés.
Avez-vous déjà exploré les en-têtes hop-by-hop ? Ces en-têtes sont couramment utilisés par les proxies pour contrôler ou modifier le comportement des requêtes transférées. En manipulant correctement ces en-têtes, vous pourriez être en mesure de convaincre le serveur que vous venez d'un emplacement de confiance, même si ce n'est pas le cas.
L'en-tête Connection peut changer la donne. Et si vous pouviez introduire un en-tête que le système considère implicitement comme fiable ? Explorez comment modifier les en-têtes de requête pour inclure X-Forwarded-Host d'une manière à laquelle le serveur ne s'attend pas.
Exemple de commande (non solution)
Voici un exemple pour commencer à expérimenter avec curl :
curl -i http://localhost:5000/protected
Cela vous montrera que l'accès est refusé par défaut.
Dans certains systèmes, certains en-têtes sont considérés comme hop-by-hop, ce qui signifie qu'ils contrôlent le comportement de chaque intermédiaire dans une chaîne de requêtes HTTP. Ces en-têtes sont supprimés ou modifiés par les proxies. Cependant, si vous manipulez intelligemment les en-têtes et spécifiez le bon en-tête hop-by-hop, vous pourriez trouver un moyen de contourner certains mécanismes de sécurité. Concentrez-vous sur le fonctionnement de l'en-tête Connection et sur la manière dont vous pourriez influencer d'autres en-têtes qui ne sont généralement pas transmis au-delà d'un seul saut. Cela pourrait vous aider à tromper le serveur en lui faisant croire que vous êtes un client de confiance.
Commencez à réfléchir à la manière de modifier votre requête pour obtenir l'accès. La réponse réside dans la façon dont l'application gère les en-têtes d'hôte de confiance. N'oubliez pas que la manipulation des en-têtes peut être la clé pour résoudre ce CTF.