mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-12 14:22:56 +00:00
4.5 KiB
4.5 KiB
Chrome缓存到XSS
☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗? 想要在HackTricks中看到您的公司广告? 或者想要访问PEASS的最新版本或下载HackTricks的PDF? 请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS & HackTricks周边
- 加入 💬 Discord群 或 电报群 或在Twitter 🐦@carlospolopm上关注我。
- 通过向hacktricks repo 和 hacktricks-cloud repo提交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关于磁盘缓存的设计文档。
☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗? 想要在HackTricks中看到您的公司广告? 或者想要访问PEASS的最新版本或下载HackTricks的PDF? 请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS & HackTricks周边
- 加入 💬 Discord群 或 电报群 或在Twitter 🐦@carlospolopm上关注我。
- 通过向hacktricks repo 和 hacktricks-cloud repo提交PR来分享您的黑客技巧。