无需路径混淆的缓存欺骗攻击【部分】

admin 2024年4月11日15:55:41评论7 views字数 1505阅读5分1秒阅读模式

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

博客新域名:https://gugesay.com

不想错过任何消息?设置星标↓ ↓ ↓

无需路径混淆的缓存欺骗攻击【部分】

目录

背景介绍

今天分享国外白帽在渗透过程中发现缓存欺骗漏洞的一个独特案例,为什么说它独特,是因为该漏洞的利用无需利用路径混淆。

基本知识了解

路径混淆

当应用程序未正确配置以区分不同路径时,就会发生路径混淆。简而言之,就是应用程序将两个不同的路径解释为同一路径,类似于哈希冲突中发生的情况。举个例子。假设请求以下 URL:

https://target.com/account/billing

一切正常,你将会进入account的billing页面,那么接下来访问第二个 URL:

https://target.com/account/billing/nonexistent.js

正常情况下,访问上面的 URL 会发生 404 Not Found ,因为我们请求的 JS 文件在 Web 服务器上并不存在。

但是,由于应用程序处理路径/路由的方式配置错误,应用程序则可能会转到account的billing页面。这是路径混淆!通过两条不同的路径,但被解释为了相同的路径。

Web缓存

处理网页内容是一项资源密集型任务,例如,当你向运行 PHP 的服务器发送请求时,服务器会将运行 PHP 的代码提供响应。当你处理用户个人资料信息或财务信息等动态数据时,这非常有用。但是,你肯定不希望服务器处理对主页、页眉/页脚或静态文件的请求,毕竟在一项资源密集型任务中,资源消耗是必须要考虑的。

与应用程序代码相比,静态文件可能不会占用那么多资源,但服务器仍然需要一一处理这些请求,那么这个问题就可以通过Web缓存来解决。

Web 缓存是指前端服务器缓存响应并将其提供给网站访问者,而无需依赖于后端服务器,可以用下图来解释:

无需路径混淆的缓存欺骗攻击【部分】

当从缓存提供响应时,你可能会看到以下响应标头:

X-Cache: HIT
X-CDN-Cache: HIT

HIT 意味着响应是从缓存中提供的,否则,你将看到MISS而不是 HIT。(注意,响应标头名称可能会有所不同)

那么前端服务器如何知道何时缓存请求呢?答案是利用缓存键(cache keys

Cache Keys

缓存键用于决定是否缓存请求,通常,缓存键包含 URL、User Agent和用户区域,可以根据具体情况自定义缓存键进行缓存。

虽然不同的前端服务器有不同的缓存键配置机制,但基本概念都会保持不变,正所谓“万变不离其宗”。

Web 缓存欺骗

Web缓存欺骗(Web Cache Deception),在Web缓存部分,我们看到前端服务器可以配置为缓存特定的响应,这就提出了一个问题——如果缓存了不应该缓存的响应会怎样?

通常,服务器仅缓存静态资源,但是,如果我们能够以某种方式缓存敏感数据(如 Cookie、Session、JSON Web Token或其它 PII)的响应,那么这将是非常可怕的!当攻击者强制前端服务器缓存敏感数据,然后从缓存中检索数据时,就会发生 Web 缓存欺骗攻击(Web Cache Deception attacks

加入星球,随时交流、全年畅享完整阅读:

(前50位成员):99元/年
(前100位成员):128元/年
100位+成员):199元/年无需路径混淆的缓存欺骗攻击【部分】

感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~

====正文结束====

原文始发于微信公众号(骨哥说事):无需路径混淆的缓存欺骗攻击【部分】

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月11日15:55:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   无需路径混淆的缓存欺骗攻击【部分】http://cn-sec.com/archives/2648152.html

发表评论

匿名网友 填写信息