Chrome Cache to XSS

Support HackTricks

Više detalja u ovom izveštaju.

Tehnika koja se ovde razmatra uključuje razumevanje ponašanja i interakcije dva osnovna tipa keša: back/forward cache (bfcache) i disk cache. Bfcache, koji čuva potpunu sliku stranice uključujući JavaScript heap, ima prioritet nad disk kešom za navigacije napred/nazad zbog svoje sposobnosti da čuva sveobuhvatniju sliku. Disk keš, s druge strane, čuva resurse preuzete sa interneta bez uključivanja JavaScript heap-a, i koristi se za navigacije napred/nazad kako bi se smanjili troškovi komunikacije. Zanimljiv aspekt disk keša je njegovo uključivanje resursa preuzetih korišćenjem fetch, što znači da će resursi sa URL-a biti prikazani od strane pregledača iz keša.

Ključne tačke:

  • Bfcache ima prioritet nad disk kešom u navigacijama napred/nazad.

  • Da bi se iskoristila stranica smeštena u disk kešu umesto bfcache, potonji mora biti onemogućen.

Onemogućavanje bfcache:

Podrazumevano, Puppeteer onemogućava bfcache, u skladu sa uslovima navedenim u dokumentaciji Chromium-a. Jedna efikasna metoda za onemogućavanje bfcache je korišćenje RelatedActiveContentsExist, postignuto otvaranjem stranice sa window.open() koja zadržava referencu na window.opener.

Reprodukcija ponašanja:

  1. Posetite veb stranicu, npr., https://example.com.

  2. Izvršite open("http://spanote.seccon.games:3000/api/token"), što rezultira odgovorom servera sa status kodom 500.

  3. U novootvorenoj kartici, idite na http://spanote.seccon.games:3000/. Ova akcija kešira odgovor http://spanote.seccon.games:3000/api/token kao disk keš.

  4. Koristite history.back() da se vratite nazad. Ova akcija rezultira prikazivanjem keširanog JSON odgovora na stranici.

Provera da li je disk keš korišćen može se potvrditi korišćenjem DevTools u Google Chrome-u.

Za dalja objašnjenja o bfcache i disk kešu, reference se mogu naći na web.dev o bfcache i Chromium-ovim dizajnerskim dokumentima o disk kešu, redom.

Support HackTricks

Last updated