Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

WebSockets: autenticación y origen

5 tareas · 40 min · Principiante

El mapa de sillas de Boletería Jerusalén se actualiza solo: cuando alguien compra, las sillas se ponen grises en todas las pantallas. Eso lo hace un canal WebSocket, una conexión que se abre con una petición HTTP y después se queda abierta para mandar mensajes en las dos direcciones. Ese canal tiene sus propias reglas, y varias de las protecciones del navegador que ya viste no se le aplican. Esta sala lee la apertura del canal, una variación de su origen y los mensajes que intercambiaron las cuentas de prueba.

0 de 5 · 0%

Objetivo de la sala

El mapa de sillas de Boletería Jerusalén se actualiza solo: cuando alguien compra, las sillas se ponen grises en todas las pantallas. Eso lo hace un canal WebSocket, una conexión que se abre con una petición HTTP y después se queda abierta para mandar mensajes en las dos direcciones. Ese canal tiene sus propias reglas, y varias de las protecciones del navegador que ya viste no se le aplican. Esta sala lee la apertura del canal, una variación de su origen y los mensajes que intercambiaron las cuentas de prueba.

Un canal WebSocket empieza con una petición HTTP normal que pide cambiar de protocolo. El navegador le añade dos cosas que importan: las cookies del sitio de destino y la cabecera Origin con el sitio que abre el canal. Si el servidor acepta, contesta que cambia de protocolo y desde ahí ya no hay peticiones ni respuestas, solo mensajes.

CORS no se aplica a ese canal: el código de cualquier sitio puede abrir un WebSocket hacia otro y leer lo que reciba. La única defensa del lado del servidor es mirar Origin en la apertura y rechazar los sitios que no son suyos. Si no lo hace y la autenticación es por cookie que viaja entre sitios, una página ajena puede abrir el canal con la sesión de quien la visita y leer sus mensajes. La guía de pruebas web de OWASP lo trata en su prueba de WebSockets.

La otra mitad es la autorización: que el canal esté autenticado no quiere decir que cada mensaje lo esté. Si el servidor deja suscribirse a cualquier canal con solo nombrarlo, una cuenta legítima lee lo de otra.

Responde para continuar

Un servidor de WebSockets acepta aperturas desde cualquier origen y autentica con la cookie de sesión. ¿Qué lo protege?

Ver pista de ayuda

Repasa qué protecciones del navegador valen para peticiones normales y cuáles para este canal.

Abre el laboratorio y lee apertura.txt y después prueba-origen.txt. El evaluador repitió la apertura desde el repetidor del proxy cambiando una sola cabecera cada vez. Compara cómo contesta el servidor en cada caso y fíjate en el primer mensaje que llega.

Responde para continuar

¿Qué código de estado devolvió el servidor a la apertura con el origen del evaluador y la cookie de la cuenta A?

Ver pista de ayuda

Es la variación V-1; compárala con la apertura normal.

Ahora mensajes.txt. Cada suscripción nombra un canal, y algunos canales llevan el número de una reserva. Las dos cuentas de prueba son del cliente, que las entregó justo para comprobar si una puede ver lo de la otra.

Responde para continuar

Escribe el canal de la cuenta B que el servidor entregó a la cuenta A.

Ver pista de ayuda

Busca los mensajes recibidos cuyo titular no es la cuenta que abrió el canal.

Un WebSocket puede ir cifrado (wss://, como HTTPS) o en claro (ws://, como HTTP). En claro, cualquiera en la misma red ve y puede cambiar los mensajes. Mira cliente-extracto.txt.

Responde para continuar

Escribe el host del canal que el cliente abre sin cifrar.

Ver pista de ayuda

Busca el esquema de cada dirección en el extracto.

Tienes tres hallazgos del mismo servidor. Para ordenarlos, pregúntate qué hace falta para que cada uno cause daño y a cuántas personas alcanza.

Responde para continuar

¿Cuál de los tres encabeza el informe?

Ver pista de ayuda

Uno de los tres no necesita que la víctima haga nada; otro solo expone datos que ya son públicos.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad