Parameter Cloaking
Parameter cloaking
Ce laboratoire est vulnérable au web cache poisoning car un paramètre spécifique est exclu de la clé de cache. De plus, il existe une incohérence dans l’interprétation des paramètres entre le système de cache et le back-end. Un utilisateur visite régulièrement la page d’accueil du site avec Google Chrome.
Objectif :
Empoisonner le cache à l’aide de la technique de parameter cloaking afin d’exécuter alert(1) dans le navigateur de la victime.
Observation initiale
On remarque la présence du cookie suivant dans la requête :
Dans la réponse du serveur, un script geolocate est chargé. Ce script utilise la valeur du cookie pour définir le pays de l’utilisateur côté client.

Identification du paramètre vulnérable
À l’aide de Param Miner (Guess query params), on détecte un comportement de parameter cloaking.

Le paramètre découvert est :

Si l’on accède à l’URL suivante :

On constate que :
La valeur du paramètre peut être modifiée librement
Le cache n’est pas invalidé
La réponse reste identique pour les utilisateurs suivants
Cela confirme que utm_content est exclu de la clé de cache.
Exploitation via le script geolocate
Le script chargé par la page est :
En ajoutant le paramètre ignoré par le cache :
On observe que :
La valeur
testest reflétée dans la réponseLe cache reste inchangé
Cela indique que le back-end interprète les paramètres différemment du cache.

Injection par parameter cloaking
On exploite cette différence de parsing en injectant un second paramètre callback masqué par utm_content :
Résultat :
Le cache considère toujours la requête comme identique

Le back-end interprète callback=alert(1) comme un nouveau paramètre valide
Le JavaScript généré exécute alert(1)

Mis à jour