XSS

Ejecución de código javascript a través de una entrada no filtrada correctamente

XSS o Cross-Site Scripting es una vulnerabilidad del lado cliente que permite a un atacante eludir el Same Origin Policy (política de mismo origen). Con su explotación, un atacante podría suplantar a un usuario.

Esta vulnerabilidad se explota a través de una entrada que no se encuentre correctamente filtrada y sea posible inyectar código javascript que posteriormente será mostrado en la aplicación web. Este código javascript será enviado a través de una entrada o parámetro de la aplicación que posteriormente será ejecutado en el navegador de la víctima.

Existen distintos tipos de XSS:

  • XSS reflejado: El payload es enviado en la petición.

  • XSS almacenado: El payload se carga desde la base de datos de la aplicación web.

  • DOM XSS: La vulnerabilidad se encuentra en el código del lado cliente y no en el del lado servidor.

Tipos de XSS

XSS reflejado

Los XSS reflejados se dan cuando el payload se inserta en un parámetro de la URL de una aplicación y este se muestra en la aplicación, pero sin ser almacenado en el servidor. Cuando una víctima accede al enlace preparado con el payload, este se interpreta y se ejecuta.

Este se suele encontrar en:

  • Campos de búsqueda y resultados.

  • Mensajes de error.

  • Nombres de usuario.

  • Valores asociados al usuario que luego se reflejen en la aplicación.

En definitiva, puede ser susceptible cualquier entrada cuyo valor se vea reflejado en el código de respuesta.

Ejemplo de XSS reflejado:

https://example.com/search?q=<script>alert('xss');</script>

XSS Almacenado

Los XSS almacenados o persistentes se dan cuando el payload se almacena en una base de datos o en la caché de un servidor. El código es ejecutado cada vez que se muestra la página vulnerable.

Suele encontrarse en:

  • Foros.

  • Secciones de comentarios.

  • Reseñas de productos.

En definitiva, cualquier entrada que sea manipulable por un usuario, almacenada en la aplicación web y posteriormente mostrada en la aplicación web. Siendo ejecutada cuando un usuario accede a la sección con el código javascript malicioso almacenado.

DOM XSS

Estos ataques son similares a los anteriores, pero sólo se dan en el DOM de la página. Un navegador analiza el contenido del HTML de una página y genera una representación interna del DOM.

Esta variante se produce cuando el DOM de una página se modifica con valores controlados por el usuario. El XSS basado en el DOM puede ser almacenado o reflejado. La diferencia clave es que los ataques XSS basados en el DOM se producen cuando un navegador analiza el contenido de la página y se ejecuta el JavaScript insertado.

Última actualización