hacktricks/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md
2024-02-10 13:03:23 +00:00

4.9 KiB

Chrome Cache to XSS

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Ulteriori dettagli approfonditi in questo articolo.

La tecnica discussa qui riguarda la comprensione del comportamento e dell'interazione di due tipi di cache principali: la cache di avanzamento/indietro (bfcache) e la cache su disco. La bfcache, che memorizza uno snapshot completo di una pagina, compreso l'heap JavaScript, ha la precedenza sulla cache su disco per le navigazioni di avanzamento/indietro grazie alla sua capacità di memorizzare uno snapshot più completo. La cache su disco, al contrario, memorizza le risorse scaricate dal web senza includere l'heap JavaScript ed è utilizzata per le navigazioni di avanzamento/indietro per ridurre i costi di comunicazione. Un aspetto interessante della cache su disco è l'inclusione delle risorse scaricate utilizzando fetch, il che significa che le risorse URL accessate verranno renderizzate dal browser dalla cache.

Punti chiave:

  • La bfcache ha la precedenza sulla cache su disco nelle navigazioni di avanzamento/indietro.
  • Per utilizzare una pagina memorizzata nella cache su disco invece della bfcache, quest'ultima deve essere disabilitata.

Disabilitazione della bfcache:

Di default, Puppeteer disabilita la bfcache, in linea con le condizioni elencate nella documentazione di Chromium. Un metodo efficace per disabilitare la bfcache è l'utilizzo di RelatedActiveContentsExist, ottenuto aprendo una pagina con window.open() che mantiene un riferimento a window.opener.

Riproduzione del comportamento:

  1. Visita una pagina web, ad esempio https://example.com.
  2. Esegui open("http://spanote.seccon.games:3000/api/token"), che restituisce una risposta del server con codice di stato 500.
  3. Nella nuova scheda aperta, vai a http://spanote.seccon.games:3000/. Questa azione memorizza la risposta di http://spanote.seccon.games:3000/api/token come cache su disco.
  4. Usa history.back() per tornare indietro. L'azione comporta il rendering della risposta JSON memorizzata sulla pagina.

La conferma dell'utilizzo della cache su disco può essere verificata tramite l'uso di DevTools in Google Chrome.

Per ulteriori dettagli sulla bfcache e sulla cache su disco, è possibile trovare riferimenti su web.dev sulla bfcache e sui documenti di progettazione di Chromium sulla cache su disco, rispettivamente.

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!