缓存欺骗原理

实现攻击的一个条件是应用程序对现有的URL请求的解释,在最后添加一个不存在的文件的名称,如http://www.example.com/home.php/nonexistent.css,最后将返回http://www.example.com/home.php

攻击原理概述

未经过身份验证的攻击者可以轻松的利用此漏洞,攻击步骤如下面所示:

1.攻击者诱使已经登录的用户访问https://www.bank.com/account.do/logo.png。

2.受害者的浏览器请求https://www.bank.com/account.do/logo.png。

3.请求到达代理,代理服务并不熟悉该文件,因此会请求Web服务器。

4.Web服务器返回受害者的帐户页面的内容,并显示200 OK响应,这意味着URL保持不变。

5.缓存机制接收到文件同时发现URL以静态文件的扩展名(.png)结尾。因为该缓存机制被配置为缓存所有静态文件并忽略任何缓存头,所以imposter.png文件会被缓存。名为account.do的新目录是在缓存目录中创建的,被缓存的文件名称为logo.png。

6.用户接收到他的帐户页面。

7.攻击者访问https://www.bank.com/account.do/logo.png。请求到达代理服务器,代理服务器直接将受害者的缓存帐户页面返回给了攻击者的浏览器。
缓存欺骗原理_第1张图片

利用条件

经过上一步的分析,我们知道该漏洞要想成功利用需要满足三个条件:

1.访问http://www.example.com/home.php/1.css页面时,Web服务器返回了该URL的home.php的内容。

2.服务器的缓存机制通过url中的扩展名来判断是否进行缓存文件,并且忽略任何缓存头。
3.受害者必须访问过http://www.example.com/home.php/1.css,已经将home.php的内容缓存到了缓存服务器上。

要想满足以上几个条件,需要考虑到不同的web服务器、代理机制以及浏览器着各自的特性。比如:我们在tomcat服务器上访问http://www.example.com/my.jsp/1.css,服务器无法返回my.jsp的内容,因此这种攻击无法利用在tomcat+java上面。

预防措施
(1)合理配置web服务器,通过配置服务器对于http://www.example.com/home.php/1.css这类的请求页面,不返回home.php页面的内容,返回404或302.
(2)合理设置缓存机制,将缓存文件的缓存机制配置为仅当缓存文件的HTTP缓存标头允许时才进行缓存。
(3)提高管理员等的安全意识

https://www.freebuf.com/articles/web/161670.html
https://zhuanlan.zhihu.com/p/29032348

你可能感兴趣的:(缓存欺骗原理)