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
postIdreste 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 ?