Chrome Cache to XSS
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Dettagli più approfonditi in questo writeup.
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.
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.
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
.
Visita una pagina web, ad esempio, https://example.com
.
Esegui open("http://spanote.seccon.games:3000/api/token")
, il che porta a una risposta del server con un codice di stato 500.
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.
Usa history.back()
per tornare indietro. L'azione porta al rendering 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 e documenti di design di Chromium sulla disk cache, rispettivamente.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)