Empoisonnement du cache web via HTTP Request Smuggling

Exploiting HTTP request smuggling to perform web cache poisoning

Le front-end et le back-end traitent différemment les requêtes HTTP. Le front-end ne prend pas en charge le chunked encoding et certaines réponses sont mises en cache.

L’objectif est de réaliser une attaque de request smuggling permettant d’empoisonner le cache : lors d’une requête suivante vers un fichier JavaScript, la victime doit être redirigée vers l’exploit server, qui renverra un script affichant document.cookie.

Le labo simule automatiquement un utilisateur victime : toutes les quelques requêtes POST que nous envoyons, la victime fait sa propre requête.

Payload sur l’exploit server

Nous préparons la réponse JavaScript malveillante :

Informations sur le fichier tracking.js

On observe que la ressource est cachée pendant 30 secondes

Analyse du comportement du bouton “next post”

  • Le paramètre postId reste identique.

  • En cliquant, l’application effectue une redirection vers le post suivant.

Exemple de requête qui déclenche cette redirection :

Test : injection d’un header Host arbitraire

En remplaçant le host de la requête interne :

Payload final pour rediriger vers notre exploit server

On injecte une requête GET interne contenant notre Host contrôlé :

Dès que la victime chargera la ressource JavaScript mise en cache, le cache renverra pendant 30 secondes notre réponse modifiée, déclenchant :

Mis à jour

Ce contenu vous a-t-il été utile ?