🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónWebSockets: 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.
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.
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
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.