hacktricks/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md

55 lines
4.3 KiB
Markdown

# Chrome Cache to XSS
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Više detalja [**u ovom izveštaju**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
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](https://web.dev/i18n/en/bfcache/) i [Chromium-ovim dizajnerskim dokumentima o disk kešu](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), redom.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}