一种新型的Web缓存欺骗攻击技术

更新日期: 2018-11-21阅读: 2.2k标签: 攻击

为了减少WEB响应时延并减小WEB服务器负担,现在WEB缓存技术已经用的非常普遍了,除了专门的CDN,负载均衡以及反向代理现在也会缓存一部分的网页内容。这里我要介绍一种WEB缓存欺骗攻击技术,这种攻击技术针对Paypal有成功的攻击案例。


背景原理

先简单介绍一下WEB缓存技术,它主要是缓存一些静态的,公开的文件,如css文件,JS文件,图片等。缓存分两类,一类是本地缓存,通过在浏览器上缓存实现,缓存之后通过F5刷新是不会重新获取已缓存文件的,通过Ctrl +F5强制刷新才会重新获取。另一类是在服务端实现,也就是在CDN、负载均衡、反向代理(后面统称缓存服务器)上实现,这次介绍的攻击技术就是针对这一种缓存。服务端的缓存原理是:客户端请求一个静态文件,如果缓存服务器没有缓存过这个文件,就会像WEB服务器请求,获取到静态文件返回给客户端,同时将这个文件缓存下来,下次再遇到同样的请求时就直接返回,直到这个缓存文件过期。

接下来讲一下WEB服务器解析的问题。假设客户端请求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,不是一个静态页面,但是缓存服务器并不知道。


攻击方法

根据上面的背景原理介绍,攻击方法也很容易总结出来了:

1.攻击者引诱已登录的用户(受害者)访问https://www.bank.com/account.do/logo.png 

 2.受害者请求https://www.bank.com/account.do/logo.png 

 3.缓存服务器接收到请求,没查到这个页面,于是向WEB服务器请求 

 4.WEB服务器返回https://www.bank.com/account.do,状态码是200 OK

5.缓存服务器收到结果,由于状态码是200 OK,会认为URL保持不变,然后由于这个URL以.png结尾,认为它是一个静态文件,于是会缓存这个文件

6.受害者得到正常结果

7.攻击者访问,请求到达缓存服务器https://www.bank.com/account.do/logo.png,缓存服务器直接返回受害者的缓存账户页面给攻击者,攻击完成。

这里有一个问题,就是HTTP header里面有一个Cache-Control,用于指示是否要缓存该页面,但是很多情况下,缓存服务器是不看这个的,直接根据文件后缀判断。

这种攻击的结果就是将受害者的个人页面变为了一个缓存在服务器上,可以公开访问的页面。这个页面可能包含受害者敏感信息,如银行卡号,也可能有这个受害者的会话标识、密保问题答案、CSRF token等,有可能让攻击者获取到受害者账号的控制权。


攻击成功的条件

我们再来梳理一下这个攻击的条件:

1.WEB服务器会将类似http://www.example.com/home.php/nonexistent.css这种页面解析为home.php

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

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

那么,那些组件满足这些条件呢?(以下具体的配置请参见文末所附链接)

符合条件1的WEB服务器有:

l  原生的PHP
l  通常配置下的基于python的WEB框架Django
l  某些配置下的ASP.NET

符合条件2的缓存服务器有:

l  某些配置下的Nginx
l  某些配置下的Cloudflare
l  某些配置下的IIS ARR

从这个总结可以看出,多数情况下这个是可以通过配置避免的,所以有些人认为这不算是个漏洞,所以也并没有什么补丁来解决这个问题,估计这个问题在很多地方都存在。


防御建议

根据触发条件我们给出的修改建议如下:

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

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

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


原文信息

本文根据Omer Gil的文章翻译而成。他创新地颠覆了WEB缓存欺骗利用方式,通过控制 Web 缓存可以保存其它用户的敏感数据,并成功在 Paypal 中实现了攻击复现。从 Omer Gil 的演讲和报告中可以看到,Web 缓存欺骗是一项厉害且有想像力的技术,这种技术可以在多种主要的缓存机制中利用实现,为未来的深入研究提供一个很好的基础平台。

随着应用程序安全性的不断成熟,寻找真正的新技术变得越来越难,所以在不断的演化过程中,能看到这种可证实的安全隐患,非常令人耳目一新。因此,这种攻击技术被评为2017十大WEB黑客技术榜单的第二名


原文链接:https://www.blackhat.com/docs/us-17/wednesday/us-17-Gil-Web-Cache-Deception-Attack-wp.pdf


链接: https://www.fly63.com/article/detial/1390

15行CSS代码攻击会导致 iOS 系统重启或 Mac 冻结

Wire 的安全研究员 Sabri Haddouche 发现了一种新的攻击,只需访问包含某些 CSS 和 HTML 的网页,就会导致 iOS 重新启动或重新启动以及 macOS 冻结。 Windows 和 Linux 用户不受此错误的影响。

前端安全系列之如何防止 XSS 攻击?

前端是引发企业安全问题的高危据点,XSS 攻击是页面被注入了恶意的代码,本文我们会讲解 XSS ,主要包括:XSS 攻击的介绍,XSS 攻击的分类,XSS 攻击的预防和检测,XSS 攻击的总结,XSS 攻击案例

WEB网站常见受攻击方式及解决办法

站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用 户的身份和权限来执行。

CSS注入

CSS仅仅只是一种用来表示样式的语言吗?当然不是!CSS就已被安全研究人员运用于渗透测试当中,以下行为有可能受到CSS注入攻击:从用户提供的URL中引入CSS文件;CSS代码中采用了用户的输入数据

网络攻击的表现形式有哪些?

对于网络攻击,应该很多人都知道是怎么一回事吧。简单来说,就是犯罪分子通过互联网网络对某家企业发起的恶意破坏,窃取数据等操作来影响该企业的正常运营。互联网技术没有那么先进的时候

CC防御过程中,WAF的主要特点有哪些?

一部分网站和游戏,以及金融的企业网站负责人员对于流量攻击应该属于耳熟能详。对此问题一直也是他们最头疼的。因此在解决DDoS攻击和CC攻击防御的过程中,运用了WAF指纹识别架构去做相对应的权限策略,以此避免误封正常的用户访问请求

DDOS攻击常见的类型

互联网”指的是全球性的信息系统,是能够相互交流,相互沟通,相互参与的互动平台。随着互联网的飞速发展,越来越多的网站应运而生,但各种问题也随之而来。其中最严重的莫过于网络安全问题,应该象每家每户的防火防盗问题一样

XSS自动点按钮有什么危害?如何让按钮不被 JS 自动点击?

在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言。假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 —— XSS 自动填入留言内容,并模拟点击发表按钮,于是就能发布带有恶意代码的留言

网站被攻击最常见的症状

小编我遇见了很多的网站客户反映说受到了DDoS攻击和CC攻击,被攻击对于开发运营维护人员,对此他们也表示很头疼。现阶段大多数网站使用的开发语言是PHP,JAVA,.net,数据库语言使用的是mysql,oracle等

HTTP慢速攻击

HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!