Entrada

XSS Lab 17

XSS Lab 17

Skills

  • Reflected XSS in canonical link tag

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio refleja la entrada del usuario en una etiqueta link canónica y escapa los corchetes angulares. Para resolver el laboratorio, debemos realizar un ataque de cross-site scripting en la página principal que inyecte un atributo que llame a la función alert. Para ayudarte con la explotación, podemos asumir que el usuario simulado presionará las siguientes combinaciones de teclas ALT+SHIFT+X, CTRL+ALT+X y Alt+X


Resolución

Al acceder a la web nos sale esto

En el desarrollo web y la optimización de motores de búsqueda (SEO), canónico significa la versión preferida o principal de una página web cuando hay varias URLs que muestran el mismo contenido. Ayuda a los motores de búsqueda a identificar la mejor versión para mostrar en los resultados de búsqueda

Por ejemplo, si tienes una página web a la que se puede acceder a través de diferentes URLs debido a parámetros o etiquetas de seguimiento (por ejemplo, https://example.com/page y https://example.com/page?utm_source=google), es posible que desees designar una URL como versión canónica para evitar diluir las clasificaciones de los motores de búsqueda y consolidar la autoridad de la página

Esta vez, la web no incorpora una función de búsqueda, pero si visualizamos el código fuente de la página, haciendo clic derecho en cualquier parte de la página y seleccionando Ver código fuente de la página en el menú desplegable, podremos ver el enlace canónico de nuestra página de blog. Esto nos permitirá encontrar la URL principal para la página y ver cómo está implementado el link canónico

Dado que nuestra página de blog no tiene una barra de búsqueda, esto no significa que no podamos intentar agregar una consulta al final de la URL de la web. Para ello, debemos agregar un signo de interrogación (?) y una cadena alfanumérica que sepamos que no aparecerá en ningún otro lugar de la página. En mi caso, voy a acceder a https://0a25000b048de3448023855d00c90069.web-security-academy.net/?testing, si nos fijamos bien, el href está entre comillas simples al inspeccionar el código fuente de la web

Sin embargo, si echamos un vistazo al inspector de Chrome en la parte de elements, vemos que se encuentra entre comillas dobles. Esto se debe a que el código entre comillas simples está siendo cargado así directamente desde el servidor, y es en el DOM donde esta cadena se cambia a comillas dobles

Esto ocurre porque cuando el navegador procesa el HTML, crea una representación del documento en forma de DOM. En esta representación, el navegador sigue las convenciones estándar, una de las cuales es mostrar los atributos de HTML con comillas dobles, independientemente de cómo se escribieron originalmente en el código fuente. Esto es un comportamiento normal del navegador al interpretar y renderizar el HTML, y nos ayuda a entender cómo se presentan los datos en la página

Podemos intentar escapar de las comillas simples e inyectar atributos en la etiqueta <link>. Hay varios payloads en https://portswigger.net/web-security/cross-site-scripting/cheat-sheet que podríamos usar si el <link> estuviese en otra parte diferente que no fuese el <head>

Los elementos en el <head>, como <link> o <title>, no están diseñados para ser interactivos. No se pueden enfocar ni interactuar con ellos a través de métodos convencionales como la tecla Tab o el clic, ya que están fuera del flujo visual de la web. Cualquier intento de hacerlos interactivos, como agregar onfocus a un <link>, no tendrá efecto en términos de interfaz de usuario, aunque puede ser relevante para vulnerabilidades como XSS si esos elementos son procesados o manipulados incorrectamente por el servidor o el cliente. Sin embargo, este no es el caso en este laboratorio

En estos casos, lo único que podemos hacer es aprovecharnos de las access keys para ejecutar el XSS. Esto nos permitirá asociar un evento de JavaScript con una tecla de acceso y ejecutar el payload

Si usamos este payload 'accesskey='X'onclick='alert(1) y pulsamos Alt + Shift + X, si estamos en Windows podremos explotar el XSS de manera exitosa

Esta entrada está licenciada bajo CC BY 4.0 por el autor.