Chrome Cache to XSS

Support HackTricks

Más detalles en este informe.

La técnica discutida aquí implica entender el comportamiento e interacción de dos tipos principales de caché: la caché de retroceso/avance (bfcache) y la caché de disco. La bfcache, que almacena una instantánea completa de una página incluyendo el montón de JavaScript, tiene prioridad sobre la caché de disco para las navegaciones de retroceso/avance debido a su capacidad para almacenar una instantánea más completa. La caché de disco, en contraste, almacena recursos obtenidos de la web sin incluir el montón de JavaScript, y se utiliza para las navegaciones de retroceso/avance para reducir los costos de comunicación. Un aspecto interesante de la caché de disco es su inclusión de recursos obtenidos usando fetch, lo que significa que los recursos de URL accedidos serán renderizados por el navegador desde la caché.

Puntos Clave:

  • La bfcache tiene precedencia sobre la caché de disco en las navegaciones de retroceso/avance.

  • Para utilizar una página almacenada en la caché de disco en lugar de la bfcache, esta última debe ser desactivada.

Desactivando bfcache:

Por defecto, Puppeteer desactiva bfcache, alineándose con las condiciones listadas en la documentación de Chromium. Un método efectivo para desactivar bfcache es a través del uso de RelatedActiveContentsExist, logrado al abrir una página con window.open() que retiene una referencia a window.opener.

Reproduciendo el comportamiento:

  1. Visita una página web, por ejemplo, https://example.com.

  2. Ejecuta open("http://spanote.seccon.games:3000/api/token"), lo que resulta en una respuesta del servidor con un código de estado 500.

  3. En la nueva pestaña abierta, navega a http://spanote.seccon.games:3000/. Esta acción almacena en caché la respuesta de http://spanote.seccon.games:3000/api/token como una caché de disco.

  4. Usa history.back() para navegar hacia atrás. La acción resulta en la renderización de la respuesta JSON almacenada en caché en la página.

La verificación de que se utilizó la caché de disco se puede confirmar a través del uso de DevTools en Google Chrome.

Para más detalles sobre bfcache y caché de disco, se pueden encontrar referencias en web.dev sobre bfcache y documentos de diseño de Chromium sobre caché de disco, respectivamente.

Support HackTricks

Last updated