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.

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

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

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

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

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

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

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.

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

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:


Last updated