Web缓存欺骗攻击原理及实战

admin 2024年1月11日09:13:52评论15 views字数 2682阅读8分56秒阅读模式

Web缓存欺骗是一种新的攻击方式,危害范围可扩大至各种技术及框架。

前言

缓存的意义在于实现资源的快速访问,在Web程序中就使用了网络缓存功能,如CDN、负载均衡器及反向代理。

为了实现快速访问,同时保证数据安全,可将一些静态的、公共的、不敏感的文件缓存在服务器,而一些动态的、敏感的文件则不应缓存。

攻击前提及原理

攻击前提:代理服务器可以进行静态文件的缓存,但对文件的缓存头部置之不理,且服务器能返回错误请求中有效路径的文件内容。

举个例子:当请求http://www.ice.com/ice.php/AAAA.txt时,由于AAA.txt并不存在,服务器提取http://www.ice.com/ice.php/的内容,并将其作为HTTP缓存发送给代理服务器,在这个缓存的HTTP头部中,可能指示代理服务器不可缓存/AAAA.txt页面。

但由于代理服务器对文件的缓存头部置之不理,而且通过文件拓展名判断出AAA.txt文件为静态文件,导致代理服务器缓存该页面,于是,代理服务器将创建一个名为ice.php的目录(如果没有),并在该目录下缓存AAA.txt,其内容为HTTP缓存。

也就是说,我们访问http://www.ice.com/ice.php/返回的HTTP头部与访问http://www.ice.com/ice.php/AAAA.txt返回的HTTP头部是相同的,具有相同的缓存头部及内容类型。

总结来说,即使服务器返回不可缓存该页面的头部指令,但代理服务器仍然可以绕过该指令,同时如果该不存在的文件的拓展名被检测为静态文件,就将该文件缓存到合适的目录下。这将导致客户端在请求时错误地获取了伪装的文件,同时该文件无法更新。

利用此漏洞,即利用服务器对于请求 URL 的解析方式,从而绕过了文件的实际存在性检就能够在访问一个不存在的文件时得到有效路径的内容,而这就是Web缓存攻击。

实例一、ChatGPT帐户接管漏洞

已知:ChatGPT用户的账户信息页面为https://chat.openai.com/api/auth/session:

Web缓存欺骗攻击原理及实战

引导已登录的用户ice请求https://chat.openai.com/api/auth/session/victim.css,此时回显在ice眼前的仍然是自己的账户信息页面,但其账户信息已被服务器存储在https://chat.openai.com/api/auth/session/victim.css中。

由于/victim.css被服务器缓存,谁都可以轻松查看ice的会话数据,而不会受到任何阻碍或困难,任何人访问https://chat.openai.com/api/auth/session/victim.css即可得到A的账户信息:

Web缓存欺骗攻击原理及实战

可以看到上图中含有令牌等敏感数据,通过利用令牌等即可实现账户接管。

实例二、Paypal缓存攻击

经测试,可缓存在 PayPal 上的各种静态文件扩展名有:

aif、aiff、au、avi、bin、bmp、cab、carb、cct、cdf、class、css、doc、dcr、dtd、gcf、gff、gif、grv、hdml、hqx、ico、ini、jpeg、jpg、 js、mov、mp3、nc、pct、ppc、pws、swa、swf、txt、vbs、w32、wav、wbmp、wml、wmlc、wmls、wmlsc、xsd、zip

因此我们可以构造形如:https://www.paypal.com/myaccount/home/ice.css的链接,从而实现缓存攻击。
同时,经测试可知缓存文件过期所需的时间为5小时,再次访问则会增加延长时间,故信息捕获的难度不大。

实战案例:
当一个已登录的用户Omer访问
https://www.paypal.com/myaccount/home/malicious3.css时,回显的内容其实是https://www.paypal.com/myaccount/home/(即个人主页面):

Web缓存欺骗攻击原理及实战

此时个人信息已被缓存至/malicious3.css
用户ice访问
https://www.paypal.com/myaccount/home/malicious3.css即可得到Omer的隐私信息:

Web缓存欺骗攻击原理及实战

解决措施如下:
1)从问题根源解决:配置缓存机制,只有当文件的 HTTP 缓存头允许缓存时才进行缓存。
2)如果缓存组件提供了选项,则配置它按其内容类型缓存文件。
3)配置Web服务器,使其对于诸如
http://www.ice.com/ice.php/AAA.txt这样的页面,不返回具有该URLice.php的内容。相反,应响应404或302。

实例三、IIS攻击

设有一个网站托管在两台Web服务器上,这两台服务器位于一个安装了 IIS 负载均衡器和 Application Request Routing (ARR) 的中间。成功登录后,用户将被重定向到包含其个人内容的"welcome.php"页面。负载均衡器被配置为缓存所有CSS文件,并忽略它们的缓存头部。

举例如下:
有一个经过身份验证的用户admin:

Web缓存欺骗攻击原理及实战

当admin访问http://www.sampleapp.com/welcome.php/stylesheet.css时,回显仍为welcome.php所示界面

Web缓存欺骗攻击原理及实战

此时IIS负载均衡器已将"welcome.php"页面视为一个目录,在缓存目录中创建该目录,并缓存了包含用户私人内容的 "stylsheet.css":

Web缓存欺骗攻击原理及实战

此时任何一人访问http://www.sampleapp.com/welcome.php/stylesheet.css都将导致admin的信息被泄露:

Web缓存欺骗攻击原理及实战

解决措施如下:
1)配置 IIS 负载均衡器,使其正确处理非存在的资源请求,并返回适当的错误响应。
2)检查和更新负载均衡器的缓存配置,确保只缓存适当的静态资源,而不是包含用户私人内容的敏感文件。
3)定期审查和更新服务器和负载均衡器的安全配置,以确保应用程序的安全性。

参考链接:
https://www.darkrelay.com/post/account-takeover-vulnerability-in-chatgpt
http://omergil.blogspot.com/2017/02/web-cache-deception-attack.html

本文仅分享Web缓存攻击知识,不承担任何由于传播、利用本公众号所发布内容而造成的任何后果及法律责任。

原文始发于微信公众号(芳华绝代安全团队):Web缓存欺骗攻击原理及实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月11日09:13:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web缓存欺骗攻击原理及实战http://cn-sec.com/archives/2383313.html

发表评论

匿名网友 填写信息