SameSite Strict bypass via sibling domain

Ya sea que esté probando el sitio web de otra persona o intentando proteger el suyo, es fundamental tener en cuenta que una solicitud puede ser del mismo sitio incluso si se emite en diferentes orígenes.

Asegúrese de auditar exhaustivamente toda la superficie de ataque disponible, incluyendo los dominios hermanos. En particular, las vulnerabilidades que permiten obtener una solicitud secundaria arbitraria, como XSS, pueden comprometer completamente las defensas del sitio, exponiendo todos los dominios del sitio a ataques entre sitios.

Además del CSRF clásico, no olvide que si el sitio web de destino admite WebSockets, esta funcionalidad podría ser vulnerable al secuestro de WebSockets entre sitios (CSWSH), que es básicamente un ataque CSRF dirigido a un protocolo de enlace de WebSocket. Para más detalles, consulte nuestro artículo sobre vulnerabilidades de WebSockets.

20250714013447.png

LAB

Desplegando el laboratorio y hacendo una revisión del SameSite encontraremos que tiene el valor de Strict. en el sitio web encontraremos con un chat en vivo

20250723210037.png

haciendo la revisión, encontraremos que realiza una comunicación por websockets. En una las peticiones encontraremos una READY el cual al enviar al repeater

20250723210117.png

Haciendo la requets observaremos que este trae toda la conversación del Live chat

20250723210755.png

Ademas, enumerando los directorios del sitio web encontraremos que el trafico esta permitido por un subdominio: https://cms-0ac300960458407c807cf348005f007e.web-security-academy.net

20250723210227.png

El dominio encontrado es un sitio web con un panel de login

20250723210320.png

Enumerando el sitio encontraremos que el valor de login es vulnerable a xss

20250723210424.png

Ahora vamos a construir un script para que con envie la

¿Cómo funciona este script?

Establecimiento de conexión: El atacante crea un objeto WebSocket apuntando a la misma URL usada por la aplicación para mantener la conversación activa.

Handshake inicial: Una vez abierta la conexión, envía un mensaje "READY" para confirmar la conexión.

Interceptación de mensajes: Cada vez que el servidor envía datos a través del WebSocket, se activa el evento onmessage, que contiene la información en event.data.

Exfiltración: El contenido interceptado se envía mediante fetch() hacia un dominio controlado por el atacante (en este caso, un endpoint generado con OAST), utilizando POST y con mode: 'no-cors' para evitar bloqueos.

20250723211206.png

Enviamos la petición insertando nuestro código malicioso en el input del login

20250723211313.png

Vemos que funciona, y la request traen el historial del chat del Live Chat

Bypass SameSite

Luego debemos construir nuestro payload malicioso el que será enviado a la victima. Para ello debemos tener encuentra lo siguiente

Nuestro payload en url encode es el siguiente:

Lo que nos quedara finalmente, este es el que se debería de enviar a la victima:

20250723214133.png
20250723214219.png

Last updated