Désynchronisation côté client (client-side desync)
Client-side desync
Ce laboratoire est vulnérable aux attaques de désynchronisation côté client car le serveur ignore l’en-tête Content-Length pour certains endpoints. Cette faiblesse permet d’amener le navigateur de la victime à divulguer son cookie de session. Objectif du labo :
Identifier un vecteur de désynchronisation côté client avec Burp, puis vérifier qu’il est reproductible dans le navigateur.
Trouver un élément de l’application permettant d’injecter ou stocker du texte.
Combiner les deux pour forcer le navigateur de la victime à envoyer une série de requêtes inter-domaines qui divulguent son cookie.
Utiliser ce cookie pour accéder au compte de la victime.
Analyse du comportement du serveur
En envoyant une requête avec un Content-Length volontairement gonflé, on observe que le serveur l’ignore et traite à la place le contenu suivant comme une nouvelle requête :
Cette réaction confirme l’existence d’une désynchronisation côté client.

Mise en évidence de la désync
En configurant deux requêtes dans Burp (une simulant le client, l’autre l’attaquant) et en les envoyant en séquence, on observe que la réponse error destinée à l’attaquant se retrouve envoyée au client légitime.



Cela démontre que le serveur désynchronise les flux HTTP.

Exfiltration du cookie de la victime
Pour forcer le navigateur de la victime à divulguer son cookie de session, on cible la fonctionnalité de commentaire, qui permet de stocker du texte dans l’application.

On envoie une requête de commentaire avec un Content-Length gonflé :
En augmentant ce champ (par exemple à 500), le commentaire publié révèle alors le cookie de session du compte connecté.

Automatisation via un script JavaScript
Pour transformer l’attaque en exploit utilisable par la victime, on construit une requête smuggled encapsulée dans un script :
Ce payload entraîne l’envoi automatique de la requête smuggled par le navigateur de la victime.

Le cookie de session dérobé apparaît ensuite dans la section des commentaires.

Mis à jour
Ce contenu vous a-t-il été utile ?