Ataques Cross-Site Scripting (XSS)

Corss-Site Scripting

En este artículo vamos a conocer qué son los ataques Cross-Site Scripting (XSS), en qué consisten, qué riesgo implican y qué tipos de ataque existen. En un artículo posterior veremos cómo podemos defendernos de este tipo de ataques.

Si te interesa este tipo de contenido y no quieres perderte nuestros artículos, puedes registrarte para recibir notificaciones de contenido nuevo en tu correo.

Qué es XSS

Cross-Site Scripting es un tipo de ataque de inyección de código, cuyo objetivo fundamental es lograr la ejecución de código JavaScript malicioso del lado del cliente, en el contexto del explorador web. Este tipo de ataques pueden ser dirigidos o no, dependiendo del tipo de ataque XSS que se esté explotando.

En qué consiste un ataque XSS

Los ataques XSS son posibles gracias a la existencia de sitios web vulnerables. En este tipo de ataques, el atacante explota un sitio web vulnerable para conseguir que dicho sitio web entregue el contenido JavaScript malicioso por él, de esta forma, un visitante que llegue al sitio web comprometido recibirá el contenido JavaScript malicioso directamente desde el sito web. El explorador web de la víctima no sabrá que el contenido entregado por el sitio web contiene código JavaScript malicioso, ya que desde su punto de vista, el contenido se origina de forma legítima en el sitio web. Así, pues, el sitio web se ve involucrado de forma involuntaria en el ataque.

Riesgos

A primera vista se podría pensar que este tipo de ataques no implican mucho riesgo para las víctimas, ya que el código JavaScript se ejecuta normalmente del lado del cliente, y los exploradores web controlan el nivel de acceso que dicho código tiene sobre la computadora y los datos del usuario, pero el nivel de peligrosidad de estos ataques se hace evidente cuando se analizan con detenimiento. Ya sabemos que el código malicioso se ejecuta en el contexto del explorador web de la víctima, y en este contexto el código malicioso puede realizar peticiones HTTP a través de objetos XMLHttpRequest, acceder a información sensible de la víctima, como la información almacenada en las cookies, y modificar la página actual con métodos de manipulación del Document Object Model (DOM).

Para ilustrar los riesgos de este tipo de ataques considere el siguiente escenario:

Un atacante logra explotar un sitio web vulnerable e inyecta código JavaScript malicioso en dicho sitio web. Este sitio web es uno de sus sitios preferidos, el cual usted visita con frecuencia.

Ahora considere las siguientes opciones que puede realizar dicho código JavaScript, todas ellas verdaderas:

  • El código malicioso inyectado modifica el DOM de la página de tal forma que genera un formulario de forma dinámica ofreciendo algún beneficio por registrarse; usted diligencia el formulario y al hacer click para enviar los datos del formulario, sus datos son enviados al servidor del atacante usando una petición HTTP en vez de ser enviados al servidor legítimo.
  • El código malicioso inyectado se ejecuta en su navegador web y accede a los datos de su cookie a través de la propiedad document.cookie, luego, a través de una petición HTTP, envía estos datos al servidor remoto del atacante, el atacante puede usar estos datos para suplantarlo a usted en el servidor legítimo.
  • El código malicioso inyectado registra un escuchador de eventos para los eventos del teclado, así, cada vez que usted pulsa una tecla en su computadora, el escuchador de eventos registra la tecla pulsada, almacenando de esta manera todo lo que usted digita en su teclado, luego, estos registros son enviados al servidor remoto del atacante.
Tipos de ataque

Anteriormente estos ataques se clasificaban en tres categorías:

  • XSS almacenados (persistentes o tipo I). Este tipo de ataques almacenan el código JavaScript malicioso de forma permanente en el servidor, en una base de datos, mensaje de foro, etc. Cuando la víctima solicita la página que contiene el código malicioso, este se descarga y se ejecuta. Actualmente, este tipo de ataques puede almacenar el código malicioso de forma permanente del lado del cliente, en el explorador web.
  • XSS reflejados (no persistentes o tipo II). Este tipo de ataques ocurren cuando los datos ingresados por el usuario son retornados inmediatamente a manera de respuesta por la aplicación web, de manera total o parcial, como en el caso de un mensaje de error o el resultado de una búsqueda.
  • XSS basado en DOM (tipo 0). En este tipo de ataque todo el flujo de datos maliciosos se da en el explorador web, es decir, el código HTML no contiene el código malicioso, en vez de esto, el código malicioso se genera y se ejecuta de forma dinámica en el tiempo de ejecución, y solo puede ser observado analizando el DOM de la página.

Actualmente, este tipo de ataques se organizan en dos grupos:

  • XSS de servidor. Este tipo de ataque ocurre cuando una entrada de datos no confiable proporcionada por el usuario es usada por el servidor web para generar una página HTML y enviarla al explorador web. El origen de esta entrada de datos puede ser una petición web por parte del usuario o información almacenada por el servidor. De esta forma, la vulnerabilidad se da por completo del lado del servidor, y el explorador web simplemente interpreta la página enviada por el servidor y ejecuta cualquier JavaScript incrustado en ella. Como se puede ver, existen XSS de servidor reflejados y XSS de servidor almacenados.
  • XSS de cliente. Este tipo de ataques ocurre cuando una entrada de datos no confiable proporcionada por el usuario es usada para actualizar el DOM por una llamada de JavaScript insegura. Una llamada de JavaScript se considera insegura si esta puede ser usada para introducir código JavaScript válido dentro del DOM. El origen de esta entrada de datos puede ser el DOM o  el servidor (vía una llamada AJAX o carga de página). El último origen de estos datos puede ser de una petición o de una ubicación almacenada en el cliente o en el servidor. Como se puede ver, existen XSS de cliente reflejados y XSS de cliente almacenados.

Hemos llegado al final de nuestro primer artículo sobre ataques XSS, ahora tenemos una visión general de este tipo de ataques y sabemos en que consisten. En nuestro siguiente artículo veremos como protegernos contra este tipo de ataques.

Si te interesa este tipo de contenido y no quieres perderte nuestros artículos, puedes registrarte para recibir notificaciones de contenido nuevo en tu correo, o darle like a nuestra Facebook Page. Para conocer nuestros planes de hosting ingresa hosting.smartbox.host.

No olvides comentar ?

2 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *