¿Qué es un ataque XSS?

César Millavil Arenas
28.02.23 12:07 PM - Comment(s)

¿Qué es un ataque XSS?

Jessica que era una ávida usuaria de internet. Pasaba muchas horas navegando por diferentes sitios web y redes sociales. Un día, mientras navegaba por una red social, ella notó que un mensaje apareció en su pantalla. Pensando que era una notificación común del sitio, hizo clic en el enlace adjunto. Lo que ella no sabía era que el mensaje era en realidad un ataque de Cross-site Scripting, o XSS. El enlace que hizo clic en realidad la llevó a un sitio web malicioso el cual aprovechó una vulnerabilidad en la aplicación de la red social para ejecutando código malicioso en su navegador. El ataque fue diseñado para robar las credenciales de inicio de sesión de Jessica y enviarlas a los atacantes.

Después de hacer clic en el enlace, notó que su sesión de la red social se cerró. Al intentar volver a iniciar sesión, se dio cuenta de que su cuenta había sido bloqueada debido a un intento de inicio de sesión fallido. Fue entonces cuando se dio cuenta de que había sido víctima de un ataque.

Jessica se sintió muy molesta por lo que había sucedido, ya que había perdido el acceso a su cuenta y temía que sus datos personales pudieran haber sido robados. Decidió investigar más sobre el ataque y descubrió que había sido víctima de un ataque de XSS.


¿Pero qué fue exactamente lo que paso y por qué perdió sus credenciales? 

Un XSS es un tipo de ataque en el que un atacante inyecta código malicioso en una página web legítima, con la intención de engañar al usuario para que revele información confidencial o realice acciones maliciosas. El ataque se produce cuando un sitio web no filtra adecuadamente la entrada de usuario, lo que permite a un atacante inyectar código en una página que luego se muestra a otros usuarios.




Después de realizar esta pequeña investigación Jessica se preocupó por su seguridad y privacidad, no se quedó con solo esto decidió investigar más aun sobre esta vulnerabilidad.

Básicamente existen 3 tipos de ataques XSS

  • Reflejado (Reflected XSS): El atacante envía un enlace malicioso a una víctima, que, al hacer clic en él, envía datos al servidor. El servidor procesa los datos y luego los devuelve al navegador de la víctima como una respuesta. Si los datos no se validan correctamente en el servidor, el código malicioso puede ejecutarse en el navegador de la víctima.
  • Almacenado (Stored XSS): El atacante puede almacenar código malicioso en el servidor, como en una base de datos, y luego hacer que el navegador de la víctima solicite esos datos. Si los datos no se validan correctamente antes de enviarlos al navegador, el código malicioso puede ejecutarse en el navegador de la víctima.
  • DOM-Based (DOM XSS): Este tipo de ataque ocurre cuando el código malicioso se ejecuta en el lado del cliente sin pasar por el servidor. El ataque se produce cuando se confía en los datos de entrada y se reflejan directamente en el DOM sin ser validados adecuadamente.

Ya teniendo alguna noción de los tipos de ataques, ella reviso su historial y pudo examinar el enlace sospechoso al cual había dado clic y se dio cuenta de que el ataque reflejado (Reflected XSS) podría haber sido el responsable. Ella sospechaba que el ataque reflejado era el culpable porque parecía que el código malicioso se ejecutaba directamente en el navegador después de hacer clic en el enlace sospechoso.

Además, también investigó el almacenado (Stored XSS) y el basado en DOM (DOM-based XSS), pero no encontró evidencia de que su cuenta hubiera sido afectada por estos tipos de ataques.


Jessica siguió investigando y en internet consiguió a más personas que habían sucedido lo mismo, la red social tenía un error de seguridad que permitía que los datos enviados por los usuarios no fueran validados adecuadamente en el servidor. El atacante aprovechó este error para enviar datos maliciosos al servidor, que se reflejaron en la página de los usuarios al hacer clic en el enlace sospechoso.

Con toda esta información ahora ella sabía que era un XSS y que al navegar un usuario debe tener cuidado con respecto a la información y enlace que visita de esta manera ella pudo adoptar algunas medidas que la ayudarían de ahora en adelante para no volver a caer en este tipo de ataques como, por ejemplo: 

  • Verificar la fuente del enlace: Antes de hacer clic en cualquier enlace sospechoso, se debe haber examinado cuidadosamente la fuente del enlace para asegurarse de que provenga de una fuente confiable y legítima. En este caso se podría haber verificado la dirección URL y la fuente del mensaje para asegurarse de que sean auténticas y no parezcan sospechosas.
  • Mantener actualizado el software del navegador: Mantener actualizado su navegador a la última versión disponible. Los navegadores modernos tienen medidas de seguridad integradas que pueden proteger a los usuarios de los ataques de XSS y otras vulnerabilidades.
  • Utilizar un plugin de seguridad: Instalar un plugin de seguridad en su navegador que pueda ayudarlo a detectar y bloquear los ataques de XSS y otros tipos de amenazas en línea existen muchos de ellos que funcionan muy bien para darte esa ayuda extra que necesitas.

Para finalizar Jessica no quiso que esto siguiera pasando por lo que decidió hacer algo para ayudar a todos los futuros usuarios, ella mando un mensaje al soporte de la red social y les explico lo que sucedía y les solicito realizar una validación en la entrada de los datos del usuario en el servidor, esto es un factor de suma importancia para evitar los XSS y mantener tu aplicación lo más segura posible.

Pocos días después recibió un mensaje del soporte de la red social en el cual le daban las gracias por reportar dicha brecha y que se sentían muy agradecidos por su aviso, comentándole también que gracias a ella habían podido resolver el problema dentro del aplicativo.

    

El código malicioso puede ser cualquier cosa, desde una simple alerta hasta un script completo que recopila información del usuario y la envía de vuelta al atacante. En algunos casos, el código malicioso puede incluso permitir que un atacante controle completamente el navegador de la víctima, lo que significa que el atacante puede realizar cualquier acción que el usuario pueda hacer, incluyendo enviar correos electrónicos, publicar en redes sociales y realizar compras en línea Desde ese día en adelante, Jessica se aseguró de mantener sus contraseñas seguras y de estar más atenta a los enlaces que recibía en línea. A través de su experiencia, aprendió la importancia de la seguridad en línea y de compartir sus conocimientos para proteger a otros usuarios de la red.


Escrito por:  Alberto Sánchez 

Analista de Ciberseguridad 

César Millavil Arenas