XSS (Cross-Site Scripting)
🌐 Vulnerabilidad: Cross-Site Scripting (XSS)
🕵️♂️ ¿Qué es XSS?
La vulnerabilidad Cross-Site Scripting (XSS) ocurre cuando una aplicación permite inyectar scripts maliciosos (generalmente JavaScript) en el navegador de otros usuarios. Esto permite a un atacante manipular la interacción del usuario con la aplicación, robar información confidencial o ejecutar acciones no autorizadas.
⚙️ ¿Cómo se produce?
El problema surge por una sanitización inadecuada de las entradas de usuario, permitiendo que código malicioso sea procesado y devuelto al navegador del usuario como parte del contenido legítimo.
Existen tres tipos principales de XSS:
XSS Reflejado: El script malicioso se inyecta a través de una solicitud (como un parámetro en la URL).
XSS Persistente: El script malicioso se almacena en el servidor y afecta a múltiples usuarios.
XSS Basado en DOM: El script se ejecuta manipulando el DOM del lado del cliente.
🛠️ Mecanismo de ataque
XSS Reflejado: El atacante envía una URL maliciosa que ejecuta un script:
Si la aplicación no valida la entrada, el script será ejecutado en el navegador de la víctima.
XSS Persistente: El atacante inserta un script en un campo que se almacena en la base de datos (por ejemplo, comentarios).
XSS DOM: La vulnerabilidad está en el lado del cliente, manipulando el DOM dinámicamente:
🎯 Impacto
Robo de datos confidenciales: Cookies de sesión, tokens CSRF, credenciales.
Falsificación de acciones: Forzar a los usuarios a realizar acciones no deseadas.
Propagación de malware: Inyectar scripts que instalan software malicioso.
Desfiguración de páginas: Manipulación de contenido visible por otros usuarios.
📉 Puntaje CVSS v3
Vector de ataque: Red (Explota mediante un navegador web)
Complejidad del ataque: Baja (requiere que la víctima visite un enlace o interactúe con contenido)
Impacto en la confidencialidad: Alto
Impacto en la integridad: Alto
Impacto en la disponibilidad: Bajo
Puntaje CVSS v3: 6.1 a 8.8 (Según el tipo) ⚠️
🧑💻 Ejemplo práctico
Código vulnerable (XSS Reflejado):
Ataque:
📌 Esto ejecutará el alert
en el navegador del usuario.
🛡️ ¿Cómo prevenir XSS?
1️⃣ Escapar el contenido antes de mostrarlo
Siempre escapa las entradas del usuario al renderizarlas:
2️⃣ Validación de entradas
Acepta solo entradas que cumplan con un formato esperado (por ejemplo, solo texto o números):
3️⃣ Uso de Content Security Policy (CSP)
Configura un CSP para limitar los scripts que pueden ejecutarse:
4️⃣ Evitar eval
y métodos peligrosos
No uses funciones que ejecuten código directamente desde entradas de usuario.
5️⃣ Uso de frameworks seguros
Frameworks como AngularJS y React previenen XSS automáticamente al escapar las variables que se muestran en el DOM.
💡 Dato extra: El XSS es una de las vulnerabilidades más comunes del OWASP Top 10, pero es fácilmente prevenible si se siguen buenas prácticas. 🚀
Última actualización
¿Te fue útil?