mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-13 14:53:03 +00:00
50 lines
4.5 KiB
Markdown
50 lines
4.5 KiB
Markdown
# 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>
|