![ChatGPT 帐户接管 - 通配符网络缓存欺骗 ChatGPT 帐户接管 - 通配符网络缓存欺骗]()
![ChatGPT 帐户接管 - 通配符网络缓存欺骗 ChatGPT 帐户接管 - 通配符网络缓存欺骗]()
去年,Nagli 在 ChatGPT 中发现了一个网络缓存欺骗漏洞。其影响至关重要,因为它导致用户的身份验证令牌泄露,并随后导致帐户被接管。OpenAI 向 ChatGPT 的用户通报了该漏洞,并迅速修复了该错误……或者他们真的这么做了吗?
在这篇文章中,我将解释如何滥用路径遍历 URL 解析器混淆来实现我所说的“通配符”缓存欺骗漏洞,从而窃取用户的身份验证令牌并接管他们的帐户。我将假设读者了解 Web 缓存欺骗漏洞的基础知识,因为我不会对其进行过多深入的解释。如果您还不熟悉这个令人敬畏的漏洞,或者想复习一下,我强烈建议您先查看Nagli 的文章,然后再回来阅读这篇文章。此外,这个错误使用了与我去年在Glassdoor中发现的 Web 缓存中毒漏洞类似的概念,该漏洞允许我们缓存“不可缓存”的文件和端点。虽然这不是完全相同的技术,但它展示了 URL 解析器混淆的可能性,特别是路径遍历,为各种缓存漏洞打开了新的大门。
在使用 ChatGPT 新实现的“分享”功能(该功能允许用户与其他人公开分享他们的聊天内容)时,我注意到一些奇怪的事情。当我继续与 ChatGPT 交谈时,我的共享聊天链接都不会更新。在处理这样的错误一段时间后,首先想到的是缓存问题。我认为共享聊天已被缓存,因此在缓存条目消失之前不会更新。为了测试这一点,我在开发工具中打开了网络选项卡来检查响应标头,正如我所预测的,我看到了标头Cf-Cache-Status: HIT。这对我来说非常有趣,因为这不是静态文件。我检查了 URL,发现该路径没有预期的静态扩展名:
这意味着可能有一个缓存规则不依赖于文件的扩展名,而是依赖于它在 URL 路径中的位置。为了测试这一点,我检查了 https://chat.openai.com/share/random-path-that-does-not-exist 并且正如预期的那样,它也被缓存了。很快就发现缓存规则看起来像这样:/share/* 这意味着路径下的几乎所有内容/share/都会被缓存。这立即成为一个危险信号(或绿色信号,具体取决于您如何看待它),因为我在上次缓存中毒研究期间对自己做了一个说明,宽松的缓存规则可能非常危险,尤其是在 URL 解析器混乱的情况下。
在使用缓存的网站中,请求在到达 Web 服务器之前必须经过 CDN。这意味着 URL 会被解析两次,这可能会导致 URL 解析器混淆。在 ChatGPT 的案例中,URL 解析器混淆意味着两个服务器以不同的方式解析 URL 编码的正斜杠,其中 Cloudflare 的 CDN 不会解码,也不会规范化 URL 编码的路径遍历,但 Web 服务器会这样做。因此,URL 编码路径遍历允许攻击者从服务器缓存他们想要的任何文件,包括包含授权令牌的影响最大的 API 端点。这听起来有点令人困惑,所以这里是一个示例有效负载:请注意,解码%2F为/并且/api/auth/session是一个敏感的 API 端点,其中包含用户的身份验证令牌 https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123 所以让我们对此进行分解。
-
我们已经确定 CDN 将缓存以下任何内容/share/
-
我们还说过 CDN 不会解码也不会标准化%2F..%2F,因此响应将被缓存
-
但是,当 CDN 转发此 URL 时,Web 服务器将解码并规范化%2F..%2F,并使用 进行响应/api/auth/session,其中包含身份验证令牌。
综上所述,当受害者访问 时https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123,他们的身份验证令牌将被缓存。当攻击者稍后访问 时https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123,他们将看到受害者缓存的身份验证令牌。游戏结束了。一旦攻击者获得了身份验证令牌,他们就可以接管该帐户、查看聊天记录、账单信息等。
这是我画的一个小草图,以帮助大家直观地看到这一点:
总之,由于 CDN 和 Web 服务器之间的路径规范化不一致,我能够使用 URL 编码路径遍历来缓存敏感的 API 端点。
令人惊讶的是,这可能是我在 bug 赏金中最快找到的,也是我更有趣的赏金之一,迄今为止我的最大赏金为 6500 美元。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/2504833.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论