Manipulating WebSocket messages to exploit vulnerabilities
Laboratorio de Portswigger sobre WebSocket Attacks
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Esta tienda en línea tiene una función de chat en vivo implementada con WebSockets. Los mensajes de chat que enviamos son vistos por un agente de soporte en tiempo real. Para resolver el laboratorio, debemos usar un mensaje WebSocket para activar una ventana emergente con alert() en el navegador del agente de soporte
Guía de WebSocket Attacks
Antes de completar este laboratorio es recomendable leerse esta guía de websocket attacks https://justice-reaper.github.io/posts/WebSocket-Attacks-Guide/
Resolución
Al acceder a la web nos sale esto
Pulsamos sobre Live chat y vemos que hay un chat de IA. Este tipo de chats suelen ser LLM's, un tipo de modelo de IA entrenado con grandes volúmenes de texto para procesar y generar lenguaje natural. Estos modelos, como ChatGPT, son una subcategoría dentro del NLP (Natural Language Processing) y se especializan en tareas como traducción, resumen, análisis de texto y generación de respuestas
Enviamos un mensaje y capturamos la petición con Burpsuite, vemos que se trata de un websocket y que esta HTML encodeando los mensajes
Sin embargo, esto lo hace del lado del cliente y podemos verlo accediendo al archivo alojado en la ruta /resources/js/chat.js
Modificamos el payload y lo enviamos
Si nos vamos a la web vemos que hemos logrado inyectar código HTML
Enviamos este payload para desencadenar un alert(), con esto podemos comprobar si la web es vulnerable a XSS
Efectivamente la web es vulnerable








