Empoisonnement du cache avec plusieurs en-têtes

Web cache poisoning with multiple headers

Ce laboratoire présente une vulnérabilité d’empoisonnement du cache web exploitable uniquement en combinant plusieurs en-têtes HTTP. Un utilisateur visite la page d’accueil environ une fois par minute. L’objectif est d’empoisonner le cache afin que la réponse exécutée dans le navigateur de la victime déclenche alert(document.cookie).

Analyse initiale

  • Interception de la requête vers la racine du site (/).

  • La réponse semble mise en cache et réutilisée pour les visiteurs suivants.

Découverte des en-têtes exploitables

  • Utilisation de l’extension Param Miner pour deviner des en-têtes non indexés.

  • L’outil détecte l’en-tête X-Forwarded-Scheme.

Test de X-Forwarded-Scheme

  • Cet en-tête indique si la requête est traitée comme provenant de HTTP ou HTTPS.

  • En envoyant :

  • Le site tente de se comporter comme s’il était servi en HTTP.

Cela provoque un dysfonctionnement et les ressources ne se chargent plus correctement à cause de redirections incorrectes.

Ajout d’un second en-tête : X-Forwarded-Host

  • Le site tente alors de charger ses ressources depuis ce domaine.

On observe notamment le chargement du fichier JavaScript :

Ce script est exécuté automatiquement au chargement de la page.

Exploitation avec l’Exploit Server

  • L’objectif est de forcer le chargement du fichier JavaScript depuis l’Exploit Server.

Sur l’Exploit Server :

  • Création d’un fichier accessible à l’URL :

Contenu du fichier :

Résultat

  • La page d’accueil charge désormais le script JavaScript depuis l’Exploit Server.

  • La réponse empoisonnée est mise en cache.

  • Lorsqu’un utilisateur visite la page, le script s’exécute automatiquement.

  • Une alerte affichant document.cookie apparaît dans le navigateur de la victime.

Mis à jour