web缓存欺骗
Posted 赛克安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web缓存欺骗相关的知识,希望对你有一定的参考价值。
介绍
先看一下什么是缓存
大多数网站为了使网页加载速度变快从而为用户提供更好的用户体验,都使用了网页缓存,这些缓存的机制是将应用程序的文件存储在缓存服务上,在用户发起请求时进行频繁的检索。
最常见的一些需要缓存的文件都是静态文件,比如.css,.js,.txt以及图片文件。实现缓存的方式也有很多,比如浏览器自身就会进行缓存,但是这种缓存并不能进行Web缓存欺骗攻击。但是另外一些在浏览器与web服务器之间实现缓存的方式则可能存在这种安全漏洞。
缓存是如何工作的?
回顾了不同形式的缓存机制后,现在,我们来看看Web缓存实际上是如何工作的。在以下示例中,http://www.example.com网站由反向代理提供缓存服务。像其他任何网站一样,这个网站使用了图片,CSS文件和脚本作为公开使用的资源。这些文件网站中所有或许多用户所使用的静态文件,并且对所有用户返回了完全相同的内容。它们不包含任何用户信息,因此不会被认为是敏感的文件。
第一次访问静态文件时,请求会通过代理服务。缓存机制并不熟悉这个文件,于是它会询问Web服务器,Web服务器返回了该文件。现在,缓存机制需要识别接收到的文件的类型。每个缓存机制的工作方式不同,但是在大多数情况下,服务器是从URL的尾端来获取文件的扩展名,然后根据该缓存机制的缓存规则来决定是否缓存这个文件。
如果文件被缓存了,那么下一次当有任何一个客户端请求该文件时,缓存机制由于已经存储了这个文件,所以它会把缓存的文件内容发送给客户端而不需要去请求Web服务器。
攻击原理
未经过身份验证的攻击者可以轻松的利用此漏洞,攻击步骤如下面所示:
1.攻击者诱使已经登录的用户访问xxx/my.php/1.css
2.受害者的浏览器请求xxx/my.php/1.css
3.请求到达代理,代理服务并不熟悉该文件,因此会请求Web服务器。
4. Web服务器返回受害者的帐户页面的内容,并显示200 OK响应,这意味着URL保持不变。
5.缓存机制接收到文件同时发现URL以静态文件的扩展名(.css)结尾。因为该缓存机制被配置为缓存所有静态文件并忽略任何缓存头,所以1.css文件会被缓存。名为1.css的新目录是在缓存目录中创建的,被缓存的文件名称为1.css。
6.用户接收到他的帐户页面。
7.攻击者访问xxx/my.php/1.css。请求到达代理服务器,代理服务器直接将受害者的缓存帐户页面返回给了攻击者的浏览器。
漏洞演示
两个页面url不同但是回显的内容是一样的
此时切换浏览器未登录直接访问 127.0.0.1/my.php/1.css
访问到了其他用户的数据
漏洞危害及利用
访问xxx/my.php/1.css 页面时, Web服务器返回了该my.php的内容
服务器的缓存机制通过url中的扩展名来判断是否进行缓存文件,并且忽略任何缓存头。
受害者必须访问过了xxx/my.php/1.css 这种页面,也就是说受害者已经将my.php的内容缓存到了缓存服务器上。
此外还需要结合社工的方法,诱使登入网站的用户特别是有权限的用户(管理员)等,访问http://victim.com/my.php/静态资源 这种形式的链接。
攻击者通过这种攻击,可以获取到受害者的账户等敏感信息。
总结
Web缓存欺骗是一种不仅易于执行的攻击,而且可能会因为暴露用户的个人信息而遭受更严重的后果,而攻击者则可以控制用户的帐户。一些知名的网站也很容易受到这种攻击;大多数这些网站由最常见的CDN提供缓存服务。可以肯定的是,仍有许多网站可能成为受害者。
虽然本白皮书仅涉及了可以满足Web缓存欺骗攻击条件的有限技术的范例,但还有各种其他Web框架和缓存机制,可以为攻击者提供类似的机会来执行攻击。
为这个漏洞创造利用条件的Web框架和缓存机制本身并不脆弱;主要问题还是不正确的配置所导致的。
为了防止网络缓存欺骗攻击,技术人员应首先了解可以执行此攻击所需要的条件。此外,建议供应商努力防止其产品满足这些攻击条件。这可以通过禁用一些功能,更改默认设置和行为以及提供警告来提高技术人员的意识来实现。
参考
https://blog.csdn.net/u010726042/article/details/77833973
https://www.freebuf.com/articles/web/161670.html
PayPal实战参考:https://cloud.tencent.com/developer/article/1516385
以上是关于web缓存欺骗的主要内容,如果未能解决你的问题,请参考以下文章