Chrome Cache to XSS
Reading time: 4 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
更多详细信息 在这篇文章中。
这里讨论的技术涉及理解两种主要缓存类型的行为和交互:后退/前进缓存 (bfcache) 和 磁盘缓存。bfcache 存储页面的完整快照,包括 JavaScript 堆,由于其能够存储更全面的快照,因此在后退/前进导航中优先于磁盘缓存。相比之下,磁盘缓存存储从网络获取的资源,但不包括 JavaScript 堆,并用于后退/前进导航以减少通信成本。磁盘缓存的一个有趣方面是它包含使用 fetch
获取的资源,这意味着访问的 URL 资源将由浏览器从缓存中呈现。
关键点:
- bfcache 在后退/前进导航中优先于磁盘缓存。
- 要利用存储在磁盘缓存中的页面而不是 bfcache,必须禁用后者。
禁用 bfcache:
默认情况下,Puppeteer 禁用 bfcache,符合 Chromium 文档中列出的条件。禁用 bfcache 的一种有效方法是通过使用 RelatedActiveContentsExist
,通过使用 window.open()
打开一个页面并保留对 window.opener
的引用来实现。
复制行为:
- 访问一个网页,例如
https://example.com
。 - 执行
open("http://spanote.seccon.games:3000/api/token")
,这将导致服务器响应 500 状态码。 - 在新打开的标签页中,导航到
http://spanote.seccon.games:3000/
。此操作将http://spanote.seccon.games:3000/api/token
的响应缓存为磁盘缓存。 - 使用
history.back()
返回。此操作将导致页面上呈现缓存的 JSON 响应。
可以通过在 Google Chrome 中使用 DevTools 确认磁盘缓存的使用。
有关 bfcache 和磁盘缓存的更多详细信息,可以参考 web.dev 上的 bfcache 和 Chromium 的磁盘缓存设计文档。
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。