En 2018, British Airways informó una violación de datos que afectó a 380.000 transacciones de reserva entre agosto y septiembre. El ataque fue posible gracias a una vulnerabilidad de secuencias de comandos entre sitios.
Este tipo de vulnerabilidad permitió que un grupo de piratas informáticos conocido como «Magecart» inyectara una biblioteca de JavaScript maliciosa en un formulario de pago no seguro en el sitio web de British Airways, de modo que cuando los usuarios enviaron el formulario, se registraron los detalles de su tarjeta de crédito y otra información personal. enviado. a un servidor controlado por atacantes. La vulnerabilidad fue detectada y reparada más tarde, pero la empresa aún estaba allí. multado con más de $ 220 millones por incumplimiento del RGPD.
Para evitar un ataque de este tipo en su sitio y proteger sus datos de usuario, primero debe comprender qué es el cross-site scripting y qué hace que su sitio sea vulnerable a este tipo de ataque. Echemos un vistazo más de cerca a continuación.
¿Qué son las secuencias de comandos entre sitios?
Las secuencias de comandos entre sitios, a menudo abreviadas como XSS, son un tipo de ataque en el que un usuario inyecta un código malicioso en un sitio web o una aplicación legítimos y confiables para ejecutar ese código malicioso en el navegador web de otro usuario. Como este espectador piensa que el código proviene de una fuente confiable, ejecutará el código.
El objetivo del atacante podría ser obtener acceso a los datos del usuario, como cookies o tokens de sesión retenidos por el navegador, hacerse pasar por el usuario para realizar ciertas acciones en la aplicación o redirigir al usuario a un sitio web malicioso bajo su control.
Aquí hay una ilustración del script entre sitios:

Echemos un vistazo a otro ejemplo a continuación.
Ejemplo de secuencias de comandos entre sitios
Tomemos un ejemplo basado en un un ataque XSS real que afectó a eBay en 2014.
Supongamos que un perpetrador descubrió una vulnerabilidad de seguridad en un sitio web de comercio electrónico que le permitió insertar código JavaScript malicioso en páginas de listado de productos específicos. Ahora, cuando los clientes hagan clic en la oferta pirateada, serán redirigidos automáticamente a una página que les pedirá que inicien sesión. Si inician sesión, el perpetrador recibirá un nombre de usuario y una contraseña para su cuenta. Con esta información, tendrán fácil acceso a los datos personales de los clientes, incluidos los datos de su tarjeta de crédito.

Este es un ejemplo de un ataque reflejado que discutiremos con más detalle a continuación.
Vulnerabilidad de secuencias de comandos entre sitios
La principal vulnerabilidad en las secuencias de comandos entre sitios son los datos de usuario que no son de confianza. La mayoría de los datos de usuarios que no son de confianza provienen de una solicitud HTTP y adoptan la forma de parámetros de URL, campos de formulario, encabezados o cookies. Los datos que no son de confianza también pueden provenir de campos de búsqueda, bases de datos, servicios web y otras fuentes. Estas entradas se consideran «no confiables» porque pueden manipularse para contener secuencias de comandos maliciosas.
Una aplicación web es vulnerable a los ataques de secuencias de comandos entre sitios si:
- almacena la entrada del usuario sin limpiar, validar o codificar
- agrega dinámicamente datos de usuario a las respuestas HTTP sin ninguna limpieza o validación
Debido a estas vulnerabilidades, un atacante podría inyectar código malicioso en un sitio web o aplicación, por ejemplo, a través de una simple solicitud HTTP. Este código malicioso podría incluirse en el contenido solicitado o dinámico y enviarse al usuario final para que lo ejecute en su navegador.
Tipos de ataques Cross Site Scripting
Los ataques de secuencias de comandos entre sitios se dividen en tres categorías: ataques reflejados, almacenados y basados en DOM. Los ataques almacenados y reflejados son más familiares, pero cubriremos los tres tipos a continuación.
Scripts almacenados en todos los sitios
Las secuencias de comandos entre sitios almacenadas, también conocidas como secuencias de comandos I persistentes o entre sitios, se refieren a ataques en los que la secuencia de comandos maliciosa se almacena de forma permanente en los servidores de destino. Se puede almacenar, por ejemplo, en una base de datos, un foro de mensajes, un registro de visitantes o un campo de comentarios.
Un usuario que solicite la información almacenada del servidor también descargará un script malicioso y será víctima de este tipo de ataque XSS.
Reflejando guiones cruzados
Las secuencias de comandos de sitios cruzados reflejadas, también conocidas como secuencias de comandos de sitios cruzados no persistentes o tipo II, se refieren a ataques en los que el script malicioso «rebota» fuera de los servidores de destino. Esto significa que el script malicioso podría ser parte de una página de error, un resultado de búsqueda u otra respuesta a una solicitud enviada al servidor de destino.
Cuando un usuario interactúa con este script malicioso, como hacer clic en un enlace en un correo electrónico, enviar un formulario o navegar por un sitio web, el script llega al sitio web comprometido y refleja el ataque en el navegador del usuario. Esto significa que el navegador del usuario acepta y ejecuta un script malicioso del sitio web porque confía en su servidor.
Por lo tanto, la diferencia clave entre XSS escrito y reflejado es la fuente del script malicioso que está contenido en la respuesta HTTP generada por el servidor. La fuente del script en XSS almacenado es la ubicación almacenada. La fuente del script en XSS reflejado es la solicitud.
scripts cruzados basados en DOM
Las secuencias de comandos DOM entre sitios, también conocidas como secuencias de comandos de tipo 0 entre sitios, se refieren a ataques en los que una secuencia de comandos maliciosa modifica el entorno DOM en el navegador del usuario y provoca una ejecución diferente del código del lado del cliente contenido en la página web.
La diferencia clave entre los ataques XSS basados en DOM y los ataques XSS almacenados y duplicados es que la fuente del script malicioso es el cliente, no el servidor. Esta es la razón por la que los scripts de sitios cruzados DOM se consideran un subconjunto del XSS del cliente, mientras que los scripts de sitios cruzados almacenados y reflejados se consideran el XSS del servidor.
La prevención de ataques de secuencias de comandos entre sitios requerirá una combinación de mejores prácticas y herramientas. Para obtener instrucciones detalladas, consulte Hoja de trucos de OWASP sobre la prevención de secuencias de comandos entre sitios.
Ataques XSS
Los ataques de secuencias de comandos entre sitios pueden tener graves consecuencias técnicas y comerciales que pueden resultar en una pérdida de confianza e ingresos del cliente. Comprender qué es el cross-site scripting y qué hace que su aplicación web sea vulnerable a él es un punto de partida importante para la prevención.








