东塔 | Web缓存欺骗***

0x00漏洞信息

披露者:Ron Reshef (ronr)php

严重程度:中危css

漏洞类型:Web缓存欺骗***html

0x01漏洞介绍

网站一般倾向于使用Web缓存功能(例如,经过CDN,负载平衡器或简单地经过反向代理)。目的很简单:存储常常检索的文件,以减小Web服务器的延迟。web

访问诸如http://www.example.com/home.php/non-existent.css之类的URL时,浏览器将生成对该URL的GET请求。浏览器

服务器返回http://www.example.com/home.php的内容。可是,URL仍为http://www.example.com/home.php/non-existent.css。缓存

HTTP标头与访问http://www.example.com/home.php的相同直接:相同的缓存标题和相同的内容类型(在这种状况下为text / html)。服务器

Web缓存服务将返回的页面保存在服务器的缓存中。网络

而后,***者能够访问如下网址:http : //www.example.com/home.php/non-existent.css 而后能够显示受害者的页面并获取受害者的敏感信息(页面内容)。ide

与网络钓鱼***不一样,此***中的危险部分是该URL看起来一点都不可疑。它看起来像原始网站上的普通网址,所以受害者认为能够单击该连接。学习

0x02漏洞复现

***者将如下连接发送给受害者:https : //open.vanillaforums.com/messages/all/non-existent.css

受害者打开连接,收件箱页面将正常加载。(而后,Web缓存服务器将保存此页面)

***者打开相同的连接(https://open.vanillaforums.com/messages/all/non-existent.css),而后加载受害者及其全部私人竞争者的收件箱页面

0x03漏洞影响

***者能够获取特定受害者的全部私人内容,而无需受害者知道。

这里咱们能够分下一下漏洞的原理和漏洞的利用条件(参考freebuf)

0x04漏洞原理

假设客户端请求

http://www.example.com/home.php/nonexistent.css 这个URL,其中home.php是真实存在的,而nonexistent.css不存在,那WEB服务器会怎么处理呢?针对这种状况的处理跟WEB服务器用的技术以及配置相关,有的会返回404 not found,有的会返回200 OK,而后把home.php返回回来。若是服务器返回200 OK就要注意了,这时缓存服务器拿到的请求是

http://www.example.com/home.php/nonexistent.css,是一个静态页面,而WEB服务器返回给缓存服务器的结果是http://www.example.com/home.php,不是一个静态页面,可是缓存服务器并不知道

0x05漏洞利用条件

  1. WEB服务器会将相似

http://www.example.com/home.php/nonexistent.css这种页面解析为home.php

2.缓存服务器会无视http header,只根据文件后缀来判断是否缓存该文件

3.受害者访问该页面时必须已登陆

多数状况下这个是能够经过配置避免的,因此有些人认为这不算是个漏洞,因此也并无什么补丁来解决这个问题,估计这个问题在不少地方都存在。

0x06防护建议

1.配置缓存服务器根据http header来判断是否缓存页面;

2.将全部静态文件放在指定的目录,只缓存这个目录里的文件;

3.配置WEB服务器在解析相似http://www.example.com/home.php/nonexistent.css 这种页面时返回404或者302。

0x07复现相关教程

Omer Gil创新地颠覆了WEB缓存欺骗利用方式,经过控制 Web 缓存能够保存其它用户的敏感数据,并成功在 Paypal 中实现了***复现

http://omergil.blogspot.com/2017/02/web-cache-deception-attack.html

翻译自hackerone免责申明:本文由互联网整理翻译而来,仅供我的学习参考,若有侵权,请联系咱们,告知删除。

相关文章
相关标签/搜索