Ruta de aprendizaje recomendada
Fundamentos Web
InicioHTML, CSS y JavaScript. Cómo funciona el navegador desde la URL hasta el DOM final. Esencial antes de entender XSS.
¿Qué es XSS?
IntroQué es Cross-Site Scripting, los 3 tipos, estadísticas reales, casos históricos y su relación con OWASP Top 10 y WSTG.
El DOM del navegador
PrereqQué es el Document Object Model, cómo lo gestiona el navegador y por qué es la superficie de ataque de XSS.
Cookies y sus flags
PrereqHttpOnly, Secure, SameSite. Por qué importan y qué ocurre cuando no están bien configuradas.
XSS Reflejado
Lab 1El servidor refleja tu input sin sanitizar. Aprende a inyectar, robar cookies y crear componentes falsos.
XSS Persistente
Lab 2El payload se almacena en la base de datos. Explota una sección de comentarios y roba la sesión de un bot.
XSS basado en DOM
Lab 3Sin servidor de por medio. El código cliente lee la URL y escribe en el DOM. Sources y sinks.
Técnicas de explotación cubiertas
Defacement
Modificar el aspecto visual de una página web mediante inyección de HTML/CSS/JS. El ataque más visual y demostrativo.
Fake Login
Inyectar un formulario de login que apunta al servidor del atacante para robar credenciales. Técnica de phishing avanzado.
Robo de cookies
Exfiltrar cookies de sesión accesibles desde JavaScript (sin flag HttpOnly). La base del secuestro de sesión.
CSRF + cookies
Forzar acciones autenticadas desde el contexto de la víctima. Cómo los flags SameSite y tokens anti-CSRF lo previenen.
Arquitectura del laboratorio
- Las páginas son HTML/CSS/JS estático servido desde Cloudflare Pages
- Los endpoints vulnerables son Cloudflare Workers (Pages Functions)
- Los comentarios del lab persistente se almacenan en Cloudflare KV
- El servidor del atacante simulado está en
/api/collect - El bot víctima se activa manualmente desde el lab persistente
Endpoints del laboratorio
| Endpoint | Tipo | Descripción |
|---|---|---|
/api/search?q= |
Vulnerable | Buscador que refleja input sin sanitizar |
/api/comments |
Vulnerable | GET/POST de comentarios sin sanitizar (KV) |
/api/bot |
Simulación | Bot víctima que visita la página de comentarios |
/api/collect |
Atacante | Servidor del atacante (recibe cookies, credenciales) |
/api/collect/results |
Info | Ver datos capturados (para validación) |