vulnerabilidad-xss-cross-site-scripting-1.jpg

Vulnerabilidad XSS (Cross Site Scripting)

XSS (Cross Site Scripting) es una vulnerabilidad que permite a un atacante insertar scripts o secuencias de código malicioso en el navegador web de un usuario.
Por lo tanto, el ataque se produce en el código del sitio web que se ejecuta en el navegador, y no en el servidor del sitio.

Los ataques de tipo XSS pueden tener diversas consecuencias para los usuarios, entre ellas:

  • Recopilacion de datos personales
  • Robo de credenciales (usuarios y contraseñas)
  • Robo de cookies
  • Redireccionamiento a sitios maliciosos
  • Acceso al control del equipo de la víctima
  • Cambio de la apariencia visual del sitio

 

 

Tipo de ataques XSS (Cross Site Scripting)

1. XSS Reflejado
La secuencia de comandos reflejada entre sitios surge cuando una aplicación recibe datos maliciosos en una solicitud HTTP y los incluye dentro de la respuesta inmediata.
Si el usuario visita la URL construida por el atacante, entonces el script del atacante se ejecutará en el navegador del usuario.
En ese momento, el script podrá realizar cualquier acción y acceder a los datos a los que el usuario tiene acceso.

 

2. XSS Almacenado
Las secuencias de comandos almacenadas entre sitios (o XSS persistentes) surgen cuando una aplicación recibe datos de una fuente que no es de confianza y los incluye en sus respuestas HTTP posteriores.

Ejemplo:
Supongamos que tenemos un sitio web en el que los usuarios pueden comentar los artículos de un blog. Estos comentarios se enviarán mediante una solicitud HTTP.
Suponiendo que la aplicación no realiza ningún otro procesamiento de los datos, un atacante podría crear una sentencia de código malicioso e insertarla (de forma encriptada) dentro de la solicitud.
Para que la solicitud la guarde como un comentario en la base de datos.
Cualquier usuario que visite la publicación del blog ahora recibirá el script dentro de la respuesta de la aplicación:
Y la secuencia de comandos del atacante se ejecutará en el navegador del usuario.

 

3. XSS Basado en DOM
El XSS basado en DOM surge cuando una aplicación que tiene código JavaScript del lado del cliente procesa datos de una fuente maliciosa, generalmente escribiendo los datos en el DOM.

El atacante puede modificar el DOM utilizando código JavaScript añadiendo nuevas etiquetas, modificando o eliminando otras, cambiando sus atributos HTML, añadiendo clases, cambiando el contenido de texto, entre otras muchas acciones más, incluyendo la inserción de código malicioso.

 

Consejos para prevenir la vulnerabilidad XSS

  1. Utiliza antivirus y comprueba que detecta malware correctamente.
  2. Mantén las aplicaciones y sistemas (navegadores web, antivirus, sistema operativo) actualizados. Los navegadores, por ejemplo, utilizan distintos filtros que analizan las solicitudes HTTP, el código HTML y las URLs para advertir o eliminar funciones sospechosas que se ejecutarán en el navegador.
  3. Utiliza frameworks que codifiquen el contenido para prevenir ataques XSS, como Ruby 3.0 o React JS.
  4. Filtra la entrada de datos del usuario lo más específicamente posible.
  5. Codifica los datos de salida para los usuarios (HTML, URLs, JavaScript y CSS).
  6. Aplica políticas de seguridad de contenido (CSP).
  7. Implementa un WAF (Web Application Firewall). Al igual que con las inyecciones SQL, un firewall de aplicaciones web ayuda a impedir la ejecución de ataques XSS, filtrando y monitoreando el tráfico HTTP entre una aplicación e Internet.