Chrome Cache to XSS

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Más detalles en este informe.

La técnica discutida aquí implica comprender el comportamiento y la interacción de dos tipos principales de caché: la caché de retroceso/avance (bfcache) y la caché de disco. El 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 cambio, 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:

  • El 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 del bfcache, este último debe estar deshabilitado.

Deshabilitar bfcache:

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

Reproducir 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 pestaña recién abierta, navega a http://spanote.seccon.games:3000/. Esta acción almacena la respuesta de http://spanote.seccon.games:3000/api/token como una caché de disco.

  4. Usa history.back() para retroceder. La acción resulta en la renderización de la respuesta JSON almacenada en la página.

La confirmación de que se utilizó la caché de disco se puede verificar mediante el 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 en los documentos de diseño de Chromium sobre caché de disco, respectivamente.

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Última actualización