Cross site scripting

Introducción

Desde la implementación del internet en nuestra vida cotidiana hemos tenido muchas ventajas, pero a raíz de esto también se nos han presentado muchas amenazas que atentan a nuestra información y que puede llegar a ser usada en nuestra contra.

El cross site scripting (XSS) es una vulnerabilidad común en las aplicaciones web que permite a los atacantes inyectar scripts maliciosos en sitios web confiables. Imagina navegar por tu foro en línea favorito, hacer clic en un enlace aparentemente inocente y, de repente, descubrir que tus datos personales han sido robados o, peor aún, que todo tu sistema se ha visto comprometido. Este escenario, lamentablemente, es demasiado común y es el resultado de los ataques XSS.

En este informe, exploraremos en detalle qué es el XSS, cómo funciona y las consecuencias que puede tener. Además, aprenderemos sobre las mejores prácticas para prevenir y proteger nuestras aplicaciones web de esta amenaza omnipresente en el panorama digital actual.

Hoy en día con el avance de la tecnología nos encontramos con muchas maneras de hackeo y ataques cibernéticos, muchas veces nos topamos con malwares como spyware, adwares, troyanos entre otros, pero hoy vamos a conocer acerca de los Cross site scripting, como identificarlos ya que muchas veces se puede ver como un sitio web normal, y como prevenirlos según información que recuperada de varias fuentes de internet sobre personas que conocen muy bien este tipo de ataque XSS.

El cross site scripting sigue siendo una amenaza significativa en el mundo de las aplicaciones web. La conciencia, la educación y la implementación de buenas prácticas son esenciales para proteger los sistemas y la información de los usuarios.

Por lo cual debemos de tener especial cuidado con los enlaces que frecuentamos y usamos ya que por ejemplo por medio de un correo sospechoso o alguna dirección web que veamos en redes sociales, ya que podemos poner en riesgo nuestra información personal y puede ser usada para extorsiones.

En todo caso los ataque XSS son peligrosos porque lo encontramos en sitios web y no en aplicaciones.

Es de vital importancia mitigar este tipo de ataques ya que presentan muchas consecuencias graves de las cuales también hablaremos en este documento para poder navegar de una forma más segura.

 


 

Desarrollo

También para comprender la gravedad de este tema es importante conocer el funcionamiento de los ataques XSS, (Moes, 2023) en su artículo los describe como:

“En un ataque XSS, el autor explota un sitio web vulnerable inyectando en él código JavaScript malicioso, que luego se sirve a usuarios desprevenidos. El atacante suele emplear técnicas ingeniosas para incrustar este código dentro de elementos HTML aparentemente inocuos, como etiquetas de entrada y etiquetas de objeto.

Una vez colocado el código malicioso, el atacante espera a que la víctima interactúe con la página web comprometida (por ejemplo, haciendo clic en un enlace o enviando un formulario). Esta interacción desencadena la ejecución del script malicioso en el navegador de la víctima, lo que permite al atacante robar información confidencial, secuestrar sesiones de usuario o ejecutar otras acciones nefastas en la máquina del usuario.” (párr. 6 - 7)

Existen varios tipos de cross site scripting cada uno con diferentes funciones, pero con la similitud de que todos son igual de son igual de peligrosos según el sitio web (Ionos,2019) un Cross site scripting indirecto se define como:

“XSS indirecto o reflejado: Cuando abrimos una URL manipulada o rellenamos un formulario adulterado se envía el script dañino al servidor web, que es devuelto al cliente sin ser comprobado. El código malicioso no se almacena en el servidor, sino que existe de forma temporal cuando el cliente abre la página web. Las páginas webs dinámicas y las aplicaciones de correo son especialmente vulnerables a este tipo de ataque.

Ejemplo: el atacante aloja el script en un enlace preparado que reenvía, por regla general, por correo electrónico. El código dañino se libera cuando el usuario abre el enlace, y es entonces cuando se abre una pantalla de registro en su navegador, que reproduce, por ejemplo, la página de su banco online. Cuando el usuario introduce sus datos de registro, el script se encarga de reenviarlos a la dirección que el atacante ha establecido previamente.” (párr. 5 - 6)

Este tipo de XSS es muy usado para estafas bancarias por lo cual debemos de prestar atención ya que podemos perder dinero fácilmente cuando un estafador usa este método de ataque.

 

“XSS directo o persistente: En este caso, los archivos maliciosos se almacenan en el servidor web y son liberados cada vez que se accede a una página desde un navegador. Con este objetivo se eligen aquellas aplicaciones web que guardan datos de usuario en su propio servidor y los transfieren sin métodos de control o codificación. Los blogs y los foros son especialmente vulnerables para este tipo de ataques.

Ejemplo: Las intervenciones de los usuarios en un foro se guardan en una base de datos, generalmente sin un control suficiente. Los atacantes aprovechan esta oportunidad y añaden su script dañino en un post aparentemente normal. Un usuario que no sospecha nada recibe el enlace al post por correo electrónico o va a parar a él por casualidad, y en el momento en que lo abre se activa el script.”   (párr. 7 - 8)

Debido a este tipo de ataque hay que tener precaución sobre los foros o sitios webs en los que buscamos alguna información o algún tipo de entretenimiento ya que podríamos caer en un ataque de estos.

 

XSS basado en DOM: También llamado XSS local, en este caso el daño se provoca por medio de los scripts que están en el lado del cliente. Al abrir una página infectada, el código malicioso puede aprovechar un agujero en la seguridad para instalarse en un archivo del explorador web y ser ejecutado allí sin ninguna comprobación previa. Al contrario de lo que ocurre en las dos variantes anteriores, en este caso el servidor web no está implicado, por lo que este ataque también afecta a las páginas estáticas que implementan este tipo de lenguaje de programación.

Ejemplo: Como el XSS reflejado, el Cross Site Scripting basado en DOM requiere que el usuario abra el enlace. Cuando esto sucede, un script de la página web selecciona la variable de la URL y ejecuta el código que contiene. Es así como se pueden usurpar cookies de sesión, por ejemplo. (párr. 9 - 10)

A continuación, veremos la importancia de identificarlos para no caer en este tipo de ataque según lo dicho por (Moes, 2023) en un sitio web.

“La detección de vulnerabilidades XSS en aplicaciones web es un paso esencial para salvaguardar su presencia en línea. Tanto las herramientas automatizadas, como Nessus y Nikto, como las técnicas de comprobación manual, como la validación de entradas y la codificación de salidas, pueden ayudarle a identificar posibles puntos débiles y a proteger sus aplicaciones de la explotación.” (párr. 18)

Pero los métodos anteriores no son los únicos que podemos encontrar y utilizar ya que (Moes, 2023) nos habla sobre otros métodos de identificación de ataques XSS.

“Además de estos métodos, recursos como el descodificador de vulnerabilidades de Veracode y la hoja de trucos para la prevención de XSS de OWASP ofrecen valiosos conocimientos y orientación sobre cómo detectar y corregir las vulnerabilidades XSS. Manteniéndose informado y vigilante, podrá defender eficazmente sus aplicaciones web contra los ataques XSS.” (párr. 19)

 


Ya una vez que aprendemos sobre la identificación de los XSS otro paso importante es aprender la manera de prevenirlos para mantenernos seguros durante la navegación. Según lo recopilado por (Sgobba, 2024), estas son varias maneras de prevenir los ataques XSS.

“Utiliza antivirus y comprueba que detecta malware correctamente. 

Mantén las aplicaciones y sistemas (navegadores web, antivirus, sistema operativo) actualizados.

Los navegadores, por ejemplo, utilizan distintos filtros que analizan las solicitudes HTTP, el código HTML y las URLs para advertir o eliminar funciones sospechosas que se ejecutarán en el navegador. Utiliza frameworks que codifiquen el contenido para prevenir ataques XSS, como Ruby 3.0 o React JS.” (párr.17)

Visto lo anterior se nos recuerda la importancia de mantener nuestras aplicaciones y sistemas operativos actualizados para prevenir cualquier amenaza no solo los ataques XSS. Además de utilizar un antivirus de confianza y no visitar páginas web que nos parezcan sospechosas p que hayan sido advertidas por el navegador.

Unido a los métodos anteriores encontramos más métodos publicados por (Sgobba, 2024) que nos van a ayudar a prevenir los ataques XSS y así protegernos durante la navegación web.

“Filtra la entrada de datos del usuario lo más específicamente posible.

Codifica los datos de salida para los usuarios (HTML, URLs, JavaScript y CSS).”

Aplica políticas de seguridad de contenido (CSP).

Implementa un WAF (Web Application Firewall). Al igual que con las inyecciones SQL, un firewall de aplicaciones web ayuda a impedir la ejecución de ataques XSS, filtrando y monitoreando el tráfico HTTP entre una aplicación e Internet. (párr. 17)

Por último, pero no menos importante (Sgobba, 2024) nos habla sobre la importancia de hacer pentest en las empresas u organizaciones para así lograr encontrar vulnerabilidades en general.

“Recuerda que una vulnerabilidad XSS no es la única que amenaza tu plataforma, por lo tanto, es recomendable hacer un ejercicio de ethical hacking (del tipo penetration testing, pruebas de intrusión o pentest) periódicamente para detectar estas vulnerabilidades y otras fallas de seguridad que pudieran estar presentes tanto en la aplicación como en las redes de tu empresa.” (párr. 19)

Esto con el fin de prevenir cualquier tipo de ataque cibernético que es muy común hoy en día y no solo para los XSS.

Al igual que las medidas de prevención e identificación los ataques XSS también han evolucionado tal y como nos lo cuenta (Báez, 2021).

“Desde la primera aparición de la vulnerabilidad se han realizado muchas investigaciones al respecto y conforme evolucionan los lenguajes de programación se van creando nuevas formas de explotar un Cross-Site Scripting, ya que existen diversos lenguajes de programación y nuevos estilos para el desarrollo web. Un caso muy interesante se conoció con el uso de JSFuck, un estilo de programación con solo seis caracteres, ya que con el mínimo de caracteres tomando como base el propio lenguaje JavaScript es posible crear y ejecutar código JavaScript. Es importante tener en cuenta este estilo de programar a la hora de tomar medidas para mitigar cualquier tipo de Cross-Site Scripting.” (párr. 15)

Por lo cual es mejor siempre estar alerta durante la navegación o cuando abrimos correos que nos parezcan sospechosos.

En el mismo artículo (Báez, 2021) nos habla un poco más de las cosas que pueden hacer los atacantes si encuentran este tipo de vulnerabilidad.

“Si te has preguntado si un atacante únicamente podría realizar un defacement del sitio en el que estas navegando, robar algunos datos que estén utilizando en la aplicación web vulnerable, o robar cookies de sesión —tal como sucedió en el ataque reciente que derivó en el robo del código fuente de FIFA 21 en el que utilizaron como vector inicial cookies de sesión de un canal de Slack—, la realidad indica que no. Existen diversos ataques por medio del uso de JavaScript. Por ejemplo, es posible leer la memoria de algunos procesos del usuario, como en el ataque Rowhammer que tiene como víctima a la tecnología DDR4, realizar ataques de ransomware, exfiltrar datos sensibles en un documento PDF, o realizar escaneo de la red. Dependiendo el vector vulnerable, una vulnerabilidad de XSS podrían derivar en cualquiera de los ataques antes mencionados.” (párr. 16)

Aquí podemos ver que este tipo de ataque puede traer muchas consecuencias a sus víctimas.

Pero que pasa si nos surge la duda de probarnos en este ámbito de ataque XSS y probar nuestras habilidades de hackeo (Báez, 2021) nos habla sobre varios métodos para prender paso a paso o que además nos ponen a pensar un poco.

Si te sientes muy motivado para poder conocer y descubrir nuevas formas para poder explotar una vulnerabilidad de XSS y así poder aplicar las medidas correctivas adecuadas, compartimos ejercicios y retos muy buenos, algunos que explican el paso a paso, así como otros muy divertidos para pensar un poco más.

Estos son algunos métodos que podemos usar como aprendizaje de ataques XSS ya que entre más información tengamos sobre el problema y cómo funciona se nos va a facilitar saber cómo solucionar y cómo lidiar con este tipo de ataque.

Muy importante también es usarlo para bien y no para dañar a alguna víctima y causarle consecuencias, por eso es mejor tener en cuenta usar estas herramientas de manera correcta por ética y así lograr tener menos ciberataques día a día.

 


Conclusión

En resumen, el Cross-Site Scripting es una vulnerabilidad seria que puede tener consecuencias significativas para la seguridad de los usuarios y la integridad de los datos en aplicaciones web. Sin embargo, con las medidas adecuadas de prevención y mitigación, es posible reducir en gran medida el riesgo de explotación de esta vulnerabilidad.

Las consecuencias del Cross-Site Scripting pueden ser graves tanto para los usuarios como para los propietarios del sitio web afectado. Para los usuarios, XSS puede conducir al robo de información confidencial, el secuestro de sesiones de usuario, la instalación de malware o el redireccionamiento a sitios web maliciosos. Para los propietarios del sitio web, XSS puede dañar la reputación de la marca, resultar en la pérdida de clientes y la exposición a demandas legales.

Comprender el XSS y aplicar buenas prácticas de seguridad es esencial para proteger nuestras aplicaciones web y a los usuarios. No subestimemos esta amenaza ya que trae consecuencias graves y trabajemos juntos para mantener la integridad y confianza en la web para así entre todos lograr una navegación más segura y además más tranquila.

 El proceso es sutil pero devastador: los atacantes envían una URL con un payload precargado a un usuario desprevenido, y cuando el usuario visita el sitio, el script se ejecuta en su navegador. Las consecuencias pueden ser variadas: desde el robo de datos personales y credenciales de inicio de sesión hasta la manipulación de la página web o el secuestro de sesiones.

Las consecuencias de los ataques XSS pueden ser graves. Los atacantes pueden robar información confidencial, como credenciales de inicio de sesión, datos personales o detalles financieros, capturando la entrada del usuario a través de campos de formulario o secuestrando sesiones de usuario. También pueden alterar sitios web cambiando el contenido o redirigiendo a los usuarios hacia páginas malintencionadas.

Los ataques XSS se pueden encontrar en cualquier lugar o sitio web
por lo cual no debemos de ser confiados y aplicar las herramientas de identificación y prevención de ataques. Y no solo tener cuidado de solo los sitios webs si no de archivos que no provengan de guantes confiables.

En conclusión, el Cross-Site Scripting sigue siendo una amenaza persistente y grave para la seguridad de las aplicaciones web en la actualidad. Sin embargo, con una combinación de medidas técnicas y de concienciación, es posible mitigar en gran medida el riesgo de explotación de esta vulnerabilidad y proteger tanto a los usuarios como a las organizaciones contra sus devastadoras consecuencias.



 

Referencias

Autor desconocido, 2019, Ionos, ¿Qué es el XSS o Cross Site Scripting? - IONOS

Autor desconocido, 2021, Kaspersky, ¿Qué es un ataque de scripting entre sitios? Definición y ejemplos (kaspersky.es)

Tibor Moes, 2023, Softwarelab, ¿Qué es cross-site scripting (XSS)? Todo sobre ello (softwarelab.org)

Jorge Báez, 2021, Welivesecurity, Qué es un ataque de XSS o Cross-Site Scripting (welivesecurity.com)

Comments

Popular posts from this blog

Fundamentos de la ciberseguridad