hacktricks/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md
2023-08-03 19:12:22 +00:00

6 KiB
Raw Blame History

Chrome缓存到XSS

☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

这篇文章中获取的技术。

有两种重要的缓存类型:

作为磁盘缓存的一个有趣点,缓存包括不仅是渲染到网页的HTTP响应还包括使用fetch获取的响应。换句话说如果你访问了一个已获取的资源的URL浏览器将在页面上渲染该资源

还有另一个重要的点。如果后退/前进导航时访问的页面同时在磁盘缓存和bfcache中都有效bfcache优先于磁盘缓存。因此,如果你需要访问同时存储在两个缓存中的页面,但想要使用磁盘缓存中的页面,你需要以某种方式禁用bfcache

禁用bfcache

puppeteer的默认选项会禁用bfcache。

让我们在这个挑战中尝试这个有趣的行为。

首先你需要禁用bfcache[2]。有很多情况下bfcache会被禁用列表如下

简单的方法是使用RelatedActiveContentsExist

因此,以下步骤可以重现这个行为:

  1. 访问一个网页(例如https://example.com
  2. 执行open("http://spanote.seccon.games:3000/api/token")
  • 服务器返回500状态码的响应。
  1. 在打开的标签中访问http://spanote.seccon.games:3000/
  • 然后,http://spanote.seccon.games:3000/api/token的响应被缓存为磁盘缓存。
  1. 执行history.back()
  • 缓存的JSON响应在页面上呈现

你可以使用Google Chrome的DevTools确认使用了磁盘缓存

☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥