Détournement de WebSocket inter-sites

Cross-site WebSocket hijacking

L’application est une boutique en ligne disposant d’une fonctionnalité de chat en direct implémentée à l’aide de WebSockets. À chaque visite de la page de chat, l’intégralité de l’historique de la conversation est automatiquement chargée, sans contrôle strict de l’origine de la requête.

Les messages échangés utilisent le format JSON suivant :

Exfiltrer l’historique du chat de la victime via une attaque de détournement de WebSocket inter-sites, puis utiliser les informations récupérées pour accéder à son compte.


Principe de l’attaque

L’Exploit Server est utilisé pour héberger un payload HTML/JavaScript qui :

  1. Établit une connexion WebSocket vers le serveur de chat cible.

  2. Envoie le message requis pour initialiser la communication (READY).

  3. Intercepte tous les messages reçus via le WebSocket.

  4. Exfiltre ces messages vers l’Exploit Server après encodage en Base64.


Payload utilisé

Un fichier data.js est créé avec le contenu suivant :

Ce script s’exécute dans le navigateur de la victime lorsqu’elle visite l’Exploit Server et exploite automatiquement sa session authentifiée.

Données exfiltrées

Le serveur d’exploitation reçoit plusieurs chaînes encodées en Base64, par exemple :

Après décodage, l’historique complet du chat est reconstitué :

Résultat

Les informations sensibles récupérées permettent d’identifier les identifiants de la victime :

  • Utilisateur : carlos

  • Mot de passe : bijj9k61m8bjv18ug67u

Ces identifiants peuvent ensuite être utilisés pour se connecter au compte de Carlos et valider le laboratoire.

Mis à jour