Blog

Cross-Site Scripting (XSS)

Los peligros de los ataques de Cross-Site Scripting (XSS)

Cross site scripting (XSS) es un tipo de ataque en el que un pirata informático inyecta scripts maliciosos en páginas web legítimas.Los ataques XSS implican la explotación de una vulnerabilidad en un servidor o una aplicación web para enviar scripts maliciosos del lado del cliente al usuario desprevenido.

JavaScript es un lenguaje de programación que utilizan las páginas web y se ejecuta en el navegador del usuario.

Este código del lado del cliente agrega funcionalidades e interactividad a las páginas web, y se usa en las principales aplicaciones y plataformas CMS como Joomla, WordPress o Drupal.

El navegador de la víctima creerá que la secuencia de comandos es confiable y, por lo tanto, la ejecutará, otorgando al atacante acceso a los tokens de sesión, cookies y otra información confidencial retenida por el navegador para ese sitio en particular.

En ciertos casos, estos scripts (también llamados payloads) pueden alterar el contenido HTML de una página para modificar sus funciones.

Básicamente existen tres tipos de ataques XSS.

Las principales diferencias están en cómo el atacante manipula la aplicación web.

  1. XSS reflejado: cuando abrimos una URL manipulada o rellenamos un formulario adulterado se envía el script dañiño al servidor web, que es devuelto al navegador del usuario sin ser comprobado.Por ejemplo, puede devolver una versión falsa de la página de un banco online.
  2. XSS almacenado: se almacena en el servidor donde está alojada la página web.Las víctimas son atacadas a través de su interacción habitual con el sitio web.
  3. XSS basado en DOM: tiene lugar completamente en el lado del cliente. El atacante no envía ningún script malicioso al servidor.En pocas palabras, los ataques XSS basados ​​en DOM ocurren cuando todo el flujo de datos maliciosos tiene lugar dentro del navegador de la víctima. Este es un ataque común para robar cookies de inicio de sesión y secuestrar cuentas.

Cómo funciona XSS

Para poder ejecutar código JavaScript malicioso en el navegador de los usuarios, el atacante primero debe encontrar una manera de inyectar código malicioso (carga útil) en los sitios web que estos visitan.

Por ejemplo, podría utilizar el formulario de comentarios del sitio para insertar una cadena maliciosa en su base de datos.

Posteriormente, para infectarse, la víctima debe visitar la página web con el código malicioso incrustado.

Si el ataque está dirigido a alguien en particular, el atacante puede usar algun tipo de ingeniería social como el phishing para enviarle una URL maliciosa.

  • Los ciberdelincuentes eligen un sitio web objetivo y analizan sus funcionalidades (como por ejemplo barras de búsqueda, formularios de inicio de sesión o sistemas de comentarios) en busca de vulnerabilidades.
  • Inyectan código malicioso en en la base de datos del sitio web, utilizando algun lenguaje de programación como HTML o JavaScript en la función vulnerable.
  • El código malicioso inyectado se convierte en parte de la página web comprometiéndola.
  • La víctima solicita la página web.
  • El servidor web proporciona al navegador de la víctima la página con la carga útil del atacante como parte del cuerpo HTML.
  • El navegador de la víctima ejecuta el script malicioso contenido en el cuerpo HTML.
  • Las rutinas que el código inyectado puede ejecutar en el sistema de la víctima pueden variar.
  • Podrían ser tan inofensivas como una imagen publicitaria que se muestra entre el contenido publicado.
  • También son capaces de redirigir al usuario a un sitio web malicioso, descargar malware en su sistema automáticamente, o robar información personal de la víctima, como credenciales de inicio de sesión.

Por qué XSS es peligroso

  • Mediante XSS, los ciberdelincuentes pueden convertir sitios web confiables en sitios maliciosos, causando daños y perjuicios no solo a las víctimas sino también a la reputación del propietario del sitio web en el que confian.
  • Los sitios web comprometidos por XSS pueden entre otras cosas, mostrar contenido inapropiado, descargar malware en el sistema del usuario o robar contraseñas.
  •  HTML5 introdujo una nueva función, el almacenamiento web. Ahora un sitio web puede almacenar datos en el navegador para su uso posterior y, por supuesto, JavaScript puede acceder a ese almacenamiento a través de window.localStorage.
  • Mediante JavaScript es posible crear una ventana emergente para recopilar credenciales con mensajes del tipo: el firmware de su router se ha actualizado, vuelva a ingresar sus credenciales para autenticarse.
  • JavaScript hace que sea muy fácil encontrar el nombre del navegador, su versión, los complementos instalados, el sistema operativo, arquitectura, hora del sistema, idioma y resolución de pantalla.

Qué pueden hacer los usuarios

  • Deshabilitar las secuencias de comandos en páginas donde no sean necesarias o deshabilítarlas por completo.Pero hay que tener en cuenta que deshabilitar JavaScript puede provoca que algunas aplicaciones web funcionen mal.
  • Evitar hacer clic en enlaces de correos electrónicos sospechosos o publicaciones en foros o redes sociales, ya que pueden llevar a páginas comprometidas.
  • Actualizar el sistema operativo y las aplicaciones con regularidad para evitar la explotación secundaria de vulnerabilidades.
  • Acceder a los sitios web directamente a través de su dirección, y no mediante una fuente o enlace de terceros.
  • Tener cuidado con las ventanas emergentes que aparecen de repente al navegar por un sitio web.
  • Utilizar NoScript, una extensión para el navegador (compatible con Google Chrome Firefox y también Brave, Opera, Edge y Vivaldi) que evita que JavaScript y otros scripts de los sitios web se carguen en las páginas que visitamos.

Para protegerse contra Cross-site Scripting, también es muy importante escanear con regularidad los sitios web que visitamos mediante alguna utilidad en línea como Sucuri, uno de los escáneres de sitios web más populares.

Quttera también puede comprobar un sitio web en busca de malware y vulnerabilidades.

Otra cosa a tener en cuenta es que el hecho de que una página web tenga un certificado de seguridad instalado (SSL) no garantiza que esté límpia de código malicioso.

Tampoco podemos estar seguros de que la página pertenece realmente al servicio al que queremos acceder.

Casi tres cuartas partes de todos los sitios de phishing utilizan certificados SSL.

¿Qué piensas?

¡Envianos tus comentarios!

También te puede interesar
Cómo detectar software espía en un teléfono móvil

Cómo detectar software espía en un teléfono móvil

¿Sospechas que alguien te está espiando? No es paranoia, sí que pueden. Esta...

Eliminar las advertencias de cookies de los sitios web

Eliminar las advertencias de cookies de los sitios web

En cumplimiento del Reglamento General de Protección de Datos (GDPR) de la Unión...

Qué es un backdoor o puerta trasera

Qué es un backdoor o puerta trasera

Una puerta trasera es un método alternativo de acceso a un programa o sistema de...

Defiendete contra la piratería de Wi-Fi

Defiendete contra la piratería de Wi-Fi

Piratear Wi-Fi es mucho más habitual de lo que la mayoría de la gente piensa.Las...