Manipulation du handshake WebSocket

Manipulating the WebSocket handshake to exploit vulnerabilities

Cette boutique en ligne dispose d’une fonctionnalité de chat en temps réel basée sur WebSockets. Un filtre XSS est présent : il est agressif, mais comporte des failles exploitables.

Un champ de chat permet d’envoyer des messages qui sont affichés en temps réel côté agent de support.

Test initial du filtre XSS

Lorsque l’on envoie le payload suivant dans le chat :

Le serveur répond avec le message :

  • Attack detected: Event handler

  • La connexion WebSocket est immédiatement fermée.

Après un simple rechargement de la page, le message suivant apparaît :

  • This address is blacklisted

L’adresse IP est donc temporairement bloquée.

Contournement du blacklistage

En ajoutant l’en-tête HTTP suivant lors de l’établissement du handshake WebSocket :

Le serveur accepte de nouveau la connexion. Pour éviter de devoir l’ajouter manuellement à chaque fois, cet en-tête est configuré de manière permanente dans le proxy.

Contournement du filtre XSS

Une fois la connexion rétablie, le payload est légèrement modifié afin de contourner le filtre :

Ce changement de casse et de syntaxe permet de bypasser la détection.

Mis à jour