Cross site scripting
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
Post a Comment