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

51 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2023-01-12 13:44:25 +00:00
# Chrome Cache to XSS
<details>
2024-02-10 17:52:19 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>tlhIngan Hol</strong></a><strong>!</strong></summary>
2023-01-12 13:44:25 +00:00
2024-02-10 17:52:19 +00:00
* **Do you work in a cybersecurity company**? **Do you want to see your company advertised in HackTricks**? **or do you want to have access to the latest version of the PEASS or download HackTricks in PDF**? **Check the SUBSCRIPTION PLANS**!
* **Discover The PEASS Family**, **our collection of exclusive NFTs**
* **Get the official PEASS & HackTricks swag**
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) **Discord group** or the **telegram group** or **follow** me on **Twitter** 🐦**@carlospolopm**.
* **Share your hacking tricks by submitting PRs to the hacktricks repo and hacktricks-cloud repo**.
2023-01-12 13:44:25 +00:00
</details>
2024-02-06 03:10:27 +00:00
More in depth details [**in this writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
The technique discussed here involves understanding the behavior and interaction of two primary cache types: the **back/forward cache (bfcache)** and the **disk cache**. The bfcache, which stores a complete snapshot of a page including the JavaScript heap, is prioritized over the disk cache for back/forward navigations due to its ability to store a more comprehensive snapshot. The disk cache, in contrast, stores resources fetched from the web without including the JavaScript heap, and is utilized for back/forward navigations to reduce communication costs. An interesting aspect of the disk cache is its inclusion of resources fetched using `fetch`, meaning accessed URL resources will be rendered by the browser from the cache.
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
### Key Points:
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
- The **bfcache** has precedence over the disk cache in back/forward navigations.
- To utilize a page stored in disk cache instead of bfcache, the latter must be disabled.
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
### Disabling bfcache:
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
By default, Puppeteer disables bfcache, aligning with conditions listed in Chromium's documentation. One effective method to disable bfcache is through the use of `RelatedActiveContentsExist`, achieved by opening a page with `window.open()` that retains a reference to `window.opener`.
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
### Reproducing the behavior:
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
1. Visit a webpage, e.g., `https://example.com`.
2. Execute `open("http://spanote.seccon.games:3000/api/token")`, which results in a server response with a 500 status code.
3. In the newly opened tab, navigate to `http://spanote.seccon.games:3000/`. This action caches the response of `http://spanote.seccon.games:3000/api/token` as a disk cache.
4. Use `history.back()` to navigate back. The action results in the rendering of the cached JSON response on the page.
2023-01-12 13:44:25 +00:00
2024-02-06 03:10:27 +00:00
Verification that the disk cache was utilized can be confirmed through the use of DevTools in Google Chrome.
2023-01-12 14:56:14 +00:00
2024-02-06 03:10:27 +00:00
For further details on bfcache and disk cache, references can be found at [web.dev on bfcache](https://web.dev/i18n/en/bfcache/) and [Chromium's design documents on disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectively.
2023-01-12 14:56:14 +00:00
2023-01-12 13:44:25 +00:00
<details>
2024-02-10 17:52:19 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>tlhIngan Hol</strong></a><strong>!</strong></summary>
2023-01-12 13:44:25 +00:00
2024-02-10 17:52:19 +00:00
* **Do you work in a cybersecurity company**? **Do you want to see your company advertised in HackTricks**? **or do you want to have access to the latest version of the PEASS or download HackTricks in PDF**? **Check the SUBSCRIPTION PLANS**!
* **Discover The PEASS Family**, **our collection of exclusive NFTs**
* **Get the official PEASS & HackTricks swag**
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) **Discord group** or the **telegram group** or **follow** me on **Twitter** 🐦**@carlospolopm**.
* **Share your hacking tricks by submitting PRs to the hacktricks repo and hacktricks-cloud repo**.
2023-01-12 13:44:25 +00:00
</details>