mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
30 lines
2.5 KiB
Markdown
30 lines
2.5 KiB
Markdown
# Chrome Cache to XSS
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
Dettagli più approfonditi [**in questo writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
|
|
|
La tecnica discussa qui coinvolge la comprensione del comportamento e dell'interazione di due tipi principali di cache: la **back/forward cache (bfcache)** e la **disk cache**. La bfcache, che memorizza un'istantanea completa di una pagina inclusa la heap di JavaScript, è prioritizzata rispetto alla disk cache per le navigazioni avanti/indietro grazie alla sua capacità di memorizzare un'istantanea più completa. La disk cache, al contrario, memorizza risorse recuperate dal web senza includere la heap di JavaScript, ed è utilizzata per le navigazioni avanti/indietro per ridurre i costi di comunicazione. Un aspetto interessante della disk cache è la sua inclusione di risorse recuperate utilizzando `fetch`, il che significa che le risorse URL accessibili verranno renderizzate dal browser dalla cache.
|
|
|
|
### Punti Chiave:
|
|
|
|
- La **bfcache** ha precedenza sulla disk cache nelle navigazioni avanti/indietro.
|
|
- Per utilizzare una pagina memorizzata nella disk cache invece della bfcache, quest'ultima deve essere disabilitata.
|
|
|
|
### Disabilitare bfcache:
|
|
|
|
Per impostazione predefinita, Puppeteer disabilita la bfcache, allineandosi alle condizioni elencate nella documentazione di Chromium. Un metodo efficace per disabilitare la bfcache è attraverso l'uso di `RelatedActiveContentsExist`, ottenuto aprendo una pagina con `window.open()` che mantiene un riferimento a `window.opener`.
|
|
|
|
### Riprodurre il comportamento:
|
|
|
|
1. Visita una pagina web, ad esempio, `https://example.com`.
|
|
2. Esegui `open("http://spanote.seccon.games:3000/api/token")`, il che risulta in una risposta del server con un codice di stato 500.
|
|
3. Nella scheda appena aperta, naviga a `http://spanote.seccon.games:3000/`. Questa azione memorizza la risposta di `http://spanote.seccon.games:3000/api/token` come una disk cache.
|
|
4. Usa `history.back()` per tornare indietro. L'azione risulta nella renderizzazione della risposta JSON memorizzata nella pagina.
|
|
|
|
La verifica che la disk cache sia stata utilizzata può essere confermata attraverso l'uso di DevTools in Google Chrome.
|
|
|
|
Per ulteriori dettagli su bfcache e disk cache, i riferimenti possono essere trovati su [web.dev su bfcache](https://web.dev/i18n/en/bfcache/) e [documenti di design di Chromium sulla disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), rispettivamente.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|