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

50 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Chrome缓存到XSS
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告** 或者想要访问**PEASS的最新版本或下载HackTricks的PDF** 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我。
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
</details>
更详细的细节请查看[**此篇文章**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote)。
这里讨论的技术涉及理解两种主要缓存类型的行为和交互:**后退/前进缓存bfcache**和**磁盘缓存**。 bfcache存储页面的完整快照包括JavaScript堆由于其能够存储更全面的快照因此在后退/前进导航中优先于磁盘缓存。 相反磁盘缓存存储从网络获取的资源不包括JavaScript堆并且用于后退/前进导航以减少通信成本。 磁盘缓存的一个有趣方面是它包括使用`fetch`获取的资源这意味着浏览器将从缓存中呈现访问的URL资源。
### 关键点:
- **bfcache**在后退/前进导航中优先于磁盘缓存。
- 要使用存储在磁盘缓存中的页面而不是bfcache必须禁用后者。
### 禁用bfcache
默认情况下Puppeteer禁用bfcache符合Chromium文档中列出的条件。 禁用bfcache的一种有效方法是通过使用`RelatedActiveContentsExist`,通过使用`window.open()`打开一个保留对`window.opener`的引用的页面来实现。
### 复现行为:
1. 访问一个网页,例如`https://example.com`。
2. 执行`open("http://spanote.seccon.games:3000/api/token")`将导致服务器响应返回500状态码。
3. 在新打开的选项卡中,导航到`http://spanote.seccon.games:3000/`。 此操作将将`http://spanote.seccon.games:3000/api/token`的响应缓存为磁盘缓存。
4. 使用`history.back()`进行后退导航。 此操作将导致在页面上呈现缓存的JSON响应。
可以通过在Google Chrome的DevTools中使用来验证是否使用了磁盘缓存。
有关bfcache和磁盘缓存的更多详细信息请参考[web.dev关于bfcache的文章](https://web.dev/i18n/en/bfcache/)和[Chromium关于磁盘缓存的设计文档](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/)。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告** 或者想要访问**PEASS的最新版本或下载HackTricks的PDF** 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我。
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
</details>