📘 Introducción
A medida que las aplicaciones web se vuelven más avanzadas y comunes, también aumentan las vulnerabilidades asociadas a ellas. Una de las más frecuentes y relevantes es Cross-Site Scripting (XSS).
XSS explota una mala sanitización de la entrada del usuario, permitiendo inyectar JavaScript malicioso que se ejecuta en el navegador de la víctima.
Las vulnerabilidades XSS:
-
Son muy comunes
-
Tienen impacto directo sobre los usuarios
-
Aparecen incluso en aplicaciones grandes y maduras
📊 Esto las convierte en un riesgo medio:
Low impact + High probability = Medium risk
Por ello, es fundamental detectar, mitigar y prevenir este tipo de fallos.
❓ ¿Qué es XSS?
Una aplicación web típica funciona así:
-
El servidor back-end envía HTML
-
El navegador del cliente lo interpreta y renderiza
Cuando una aplicación no valida ni filtra correctamente la entrada del usuario, un atacante puede:
-
Inyectar código JavaScript
-
Hacer que otros usuarios lo ejecuten sin saberlo
📌 Ejemplos comunes de puntos vulnerables:
-
Formularios de comentarios
-
Campos de búsqueda
-
Respuestas o mensajes
El código XSS no se ejecuta en el servidor, sino en el navegador de la víctima.
🧠 Impacto real de XSS
Aunque XSS no compromete directamente el servidor, sí puede causar daños graves, como:
-
🍪 Robo de cookies de sesión
-
🔐 Secuestro de cuentas
-
🔄 Ejecución de acciones en nombre del usuario
-
📢 Inserción de anuncios o redirecciones
-
⛏️ Minería de criptomonedas
-
El código se ejecuta dentro del motor JS del navegador (ej. V8)
-
Está limitado por la Same-Origin Policy
-
No permite ejecución directa de código a nivel de sistema
Sin embargo… 👇
Una vulnerabilidad XSS puede encadenarse con un exploit del navegador, permitiendo salir del sandbox y ejecutar código en la máquina del usuario.
📜 Casos reales de XSS
🐛 Gusano Samy (MySpace — 2005)
-
XSS almacenado en perfiles de MySpace
-
Mensaje: "Samy es mi héroe"
-
Se replicaba automáticamente al visitar perfiles infectados
-
Más de 1 millón de usuarios afectados en un solo día
📌 Aunque fue inofensivo, demostró el potencial devastador de XSS.
🐦 TweetDeck (Twitter — 2014)
-
Vulnerabilidad XSS en el panel de TweetDeck
-
Permitía crear tweets que se autoretwitteaban
-
Más de 38.000 retweets en menos de 2 minutos
👉 Twitter tuvo que desactivar temporalmente TweetDeck.
🔍 Otros ejemplos relevantes
-
Google Search: múltiples XSS encontrados (hasta 2019)
-
Apache Web Server: XSS explotado para robo de credenciales
Incluso los sistemas más grandes y auditados no están libres de XSS.
🧪 Tipos de vulnerabilidades XSS
1️⃣ Stored XSS (Persistente)
📌 Ocurre cuando:
-
La entrada del usuario se almacena en la base de datos
-
Se muestra posteriormente a otros usuarios
🧠 Ejemplos:
-
Comentarios
-
Publicaciones
-
Perfiles de usuario
📍 Impacto alto: afecta a todas las víctimas que visualicen el contenido.
2️⃣ Reflected XSS (No persistente)
📌 Ocurre cuando:
-
La entrada del usuario se procesa en el servidor
-
Se refleja directamente en la respuesta
-
No se almacena
🧠 Ejemplos:
-
Resultados de búsqueda
-
Mensajes de error
📍 Requiere que la víctima interactúe con un enlace malicioso.
3️⃣ DOM-based XSS
📌 Ocurre cuando:
-
La entrada del usuario se procesa solo en el navegador
-
No llega al servidor
-
Se manipula el DOM con JavaScript vulnerable
🧠 Ejemplos:
-
Parámetros en la URL
-
Fragmentos (#hash)
-
Manipulación del DOM sin sanitización
Es más difícil de detectar porque no aparece en el tráfico HTTP.
🧭 Próximos pasos
En las siguientes secciones:
-
Analizaremos cada tipo de XSS en detalle
-
Veremos ejemplos prácticos
-
Explotaremos vulnerabilidades reales
-
Estudiaremos técnicas de prevención y mitigación
🚀 Continuamos con Stored XSS…