Cross-Site Scripting (XSS)
Definición
XSS es una vulnerabilidad que permite a un atacante ejecutar código malicioso en el navegador del usuario. Este código puede:
- Robar información confidencial (como cookies, sesiones, contraseñas).
- Redirigir a usuarios a sitios maliciosos.
- Registrar interacciones del usuario en el navegador.
Tipos de XSS
- Reflejado (Reflected):
- El código malicioso se envía como parte de una solicitud (ej., URL).
- El servidor refleja la entrada sin validación.
- Ejemplo: Un enlace malicioso enviado a la víctima, como:
http://vulnerable.com/search?q=<script>alert('XSS')</script>- Almacenado (Stored):
- El atacante guarda el código malicioso en el servidor (en una base de datos, comentarios, etc.).
- Cada vez que los usuarios acceden al recurso afectado, el código se ejecuta.
- Ejemplo: Un script malicioso insertado en un campo de comentarios.
- Basado en DOM (DOM-Based):
- El ataque ocurre directamente en el navegador mediante modificaciones al DOM.
- El servidor no está involucrado directamente.
- Ejemplo: Una aplicación web que lee datos del
location.hashy los usa sin sanitizar.
Práctica
-
Repositorio de aprendizaje:
Usa secDevLabs para montar laboratorios específicos sobre XSS. Este proyecto ofrece entornos controlados para aprender y comprender cómo funcionan las vulnerabilidades y cómo prevenirlas. -
Máquina virtual en Vulnhub:
Practica con la máquina MyExpense descargándola desde MyExpense en Vulnhub. Sigue los pasos:- Configura un entorno de virtualización (VirtualBox o VMware).
- Instala y ejecuta la VM en tu máquina.
- Identifica vulnerabilidades XSS presentes en la aplicación.
Medidas de mitigación
Para proteger aplicaciones contra XSS:
-
Validar y sanitizar entradas:
- Validar que los datos recibidos sean del tipo esperado.
- Escapar caracteres especiales como
<,>,",', y&.
-
Uso de cabeceras de seguridad:
Content-Security-Policy (CSP): Restringe fuentes de scripts y estilos.X-XSS-Protection: Configura protección contra XSS en navegadores.
-
Escapado de salida:
- Escapar datos al escribirlos en el HTML, atributos, o JavaScript para evitar la ejecución accidental.
-
Uso de bibliotecas seguras:
- Implementa bibliotecas como OWASP ESAPI o frameworks modernos que gestionan automáticamente las entradas de usuario.
Recursos adicionales
- OWASP XSS Prevention Cheat Sheet
- Practica en otras plataformas como Hack The Box o TryHackMe.