新型Web攻击技术——Web缓存欺骗

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文讲的是新型Web攻击技术——Web缓存欺骗,Web缓存欺骗是一种新的Web攻击向量,这种攻击技术的出现使得多种Web缓存技术和框架面临风险。
本文讲的是 新型Web攻击技术——Web缓存欺骗Web缓存欺骗是一种新的Web攻击向量,这种攻击技术的出现使得多种Web缓存技术和框架面临风险。

Web缓存和服务器反应的一点介绍

很多网站通常都倾向于使用web缓存功能(例如通过CDN,负载均衡器或简单的反向代理)。使用Web缓存功能的目的很简单:存储那些经常检索的文件,以减少Web服务器响应的延迟。

让我们来看一个网络缓存的例子。网站http://www.example.com通过配置了反向代理作为Web缓存。存储在服务器上并需要返回用户个人内容(如http://www.example.com/home.php)的动态网页必须要按不同的用户动态的创建,因为每个用户的数据是不同的。这种数据,或至少其个性化的这一部分,是不会被缓存的。

更合理及常见的缓存内容都是静态或公共文件:样式表(css),脚本(js),文本文件(txt),图像(png,bmp,gif) 等,在大多数人的正常意识中,这些文件通常不会包含用户的任何敏感信息。此外,在那些关于Web缓存配置的各种最佳实践的文章中,都会这样说:“建议缓存所有公开的静态文件并忽略其HTTP缓存头信息”。

2.网络缓存欺骗攻击依赖于浏览器和网络服务器的反应,与RPO攻击很相似,下面两篇文章对RPO攻击做了一些解释。

http://www.thespanner.co.uk/2014/03/21/rpo/
http://blog.innerht.ml/rpo-gadgets/

那么访问了像http://www.example.com/home.php/non-existent.css这样的网址时会发生什么?(译者注:也就是在http://www.example.com/home.php后面加上缓存的文件类型,文件名可以是不存在的)

浏览器会发出对该网址的GET请求。有趣的是服务器的反应 —— 服务器会如何解释请求的URL?根据服务器的Web缓存技术和配置(对于不同的服务器,URL的结构可能略有不同),服务器返回了http://www.example.com/home.php的内容。是的,浏览器地址栏的网址仍然为http://www.example.com/home.php/non-existent.css。HTTP标头信息与直接访问http://www.example.com/home.php的标头信息相同:缓存标头信息和内容类型相同(在这种情况下为text / html)。

如果我们访问http://www.example.com/home.php/non-existent.css,会发生什么情况,注意,在代理服务器上已经设置了对静态文件进行网络缓存。服务器会忽略此类文件的缓存头?让我们来分析一下这个过程:

1. 浏览器请求http://www.example.com/home.php/non-existent.css。
2. 服务器返回http://www.example.com/home.php的内容,很可能使用了标识不缓存此页面的HTTP缓存标头。
3. 通过代理服务器响应该请求。
4. 代理服务器发现该文件的扩展名是css。
5. 在缓存目录下,代理服务器会创建一个名为home.php的目录,并缓存冒名顶替的“CSS”文件(不存在的css文件)。

Oh!

新型Web攻击技术——Web缓存欺骗

漏洞利用

如果攻击者诱骗已登录的用户访问http://www.example.com/home.php/logo.png,则该网页(包含用户个人信息的网页)将被缓存到缓存服务器上,因此这些被缓存的个人信息就可以公开访问。 如果响应的HTTP主体信息中包含(由于某种原因)了会话标识符,安全密保问题或CSRF令牌,则可能变得更糟。 在这种时候,所有的攻击者都会自己访问缓存页面然后公开这些被缓存的用户隐私数据。

新型Web攻击技术——Web缓存欺骗

一件有趣儿的小事

通常,不需要进行身份验证即可访问网站缓存的公共静态文件。因此,缓存的文件是公共的且可访问的 ——不需要身份验证。

条件

因此,基本上,需要两个条件来确认网站是否存在此漏洞:

1. Web缓存功能是通过判断Web应用程序URL文件的扩展名来决定是否进行高速缓存,而且忽略了HTTP中的任何缓存头标识信息。
2. 访问http://www.example.com/home.php/non-existent.css等网页时,网络服务器将返回“home.php”的网址的内容。

缓解措施

1.  将缓存文件的缓存机制配置为仅当缓存文件的HTTP缓存标头允许时才进行缓存。这是解决这个问题的根本的解决办法。

2.  如果缓存组件提供Content-Type选项的话,请将缓存组件配置为按文件的内容类型进行缓存。

3.  配置Web服务器,以便对于像http://www.example.com/home.php/non-existent.css之类的页面,Web服务器不会返回带有 “home.php” 的URL的内容。相反的,服务器应该用404或302来响应这些URL的请求。

PayPal 网站中的Web缓存欺骗——漏洞披露

PayPal很容易受到网络缓存欺骗攻击。目前该漏洞现已修复,并已公开披露。

利用此漏洞可能泄漏的用户信息:

用户的名字和姓氏
账户余额
最后四个信用卡数字
交易数据
护照号码
电子邮件地址
家庭地址
电话号码
漏洞页面中包含的任何其他信息

一些漏洞页面的示例:

https://www.paypal.com/myaccount/home/attack.css
https://www.paypal.com/myaccount/settings/notifications/attack.css
https://history.paypal.com/cgi-bin/webscr/attack.css?cmd=_history-details

下面是可用于在PayPal网站上缓存页面的各种静态文件扩展名(超过40个):

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

缓存过期

我测试了缓存文件过期的时间。看起来,在被访问一次(第一次)后,文件被缓存大约5个小时。如果在该期间再次访问,则会延长过期时间。很明显,这么长的时间段足以让攻击者在缓存文件过期之前“捕获”到缓存文件,并且通过不断地监视此URL,获取他可以在创建缓存文件时要公开的用户隐私信息。

Demo视频

主页:https://www.paypal.com/myaccount/home

Paypal主页的Web缓存欺骗攻击Demo视频:https://youtu.be/pLte7SomUB8

个人设置页面:https://www.paypal.com/myaccount/settings

Paypal个人设置页面的Web缓存欺骗攻击Demo视频:https://youtu.be/e_jYtALsqFs

历史页面:https://history.paypal.com/cgi-bin/webscr?cmd=_history-details

Paypal历史页面的Web缓存欺骗攻击Demo视频:https://youtu.be/dgZVe7D8SRE

在我报告了此漏洞后,PayPal奖励了我3,000美刀,;)。

通过Web缓存欺骗技术劫持用户

我在其他应用程序中也发现了此漏洞,不过不幸的是,由于一些原因,我不能向公众公开(更糟的是,还有一些不错的Demo视频)。在这些应用程序中,可以完全控制应用程序的用户。这完全是有可能的,因为恢复用户密码的会话ID或安全密保问题的答案包含在了易受攻击的网页的HTML代码中。非常感谢Sagi Cohen的帮助。

IIS演示视频

在下面的视频中,网站托管在了IIS负载均衡器后面的两个Web服务器上,并安装了应用程序请求路由(ARR)。

成功登录的用户将被重定向到“welcome.php”的页面,其中包含其个人信息内容。负载均衡器配置为对所有的CSS文件进行缓存,并忽略这类文件的HTTP缓存头。

已登录的用户在访问http://www.sampleapp.com/welcome.php/stylesheet.css时,IIS负载均衡器会将“welcome.php”页面引用为一个目录,并在缓存目录中创建它,然后缓存“welcome.php”的内容,其中包含了用户的隐私内容信息,缓存的文件名为'stylesheet.css'。




原文发布时间为:2017年3月2日
本文作者:丝绸之路
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
3月前
|
SQL 存储 安全
Web 常见攻击方式及防御方法
【10月更文挑战第25天】Web 安全是一个复杂而重要的领域,攻击者不断寻找新的攻击方法,我们需要不断加强防御措施,提高安全意识,以保障 Web 应用的安全运行。通过采取多种防御手段的综合运用,我们可以有效地降低 Web 攻击的风险,保护用户的信息和财产安全。同时,随着技术的不断发展,我们也需要持续关注和研究新的安全威胁和防御方法,以应对不断变化的安全形势。
474 56
|
2月前
|
存储 缓存 负载均衡
从零到一:分布式缓存技术初探
分布式缓存通过将数据存储在多个节点上,利用负载均衡算法提高访问速度、降低数据库负载并增强系统可用性。常见产品有Redis、Memcached等。其优势包括性能扩展、高可用性、负载均衡和容错性,适用于页面缓存、应用对象缓存、状态缓存、并行处理、事件处理及极限事务处理等多种场景。
135 1
|
3月前
|
存储 缓存 网络协议
如何防止DNS缓存中毒攻击(一)
DNS缓存中毒也称为DNS欺骗
71 10
|
3月前
|
Web App开发 网络协议 安全
基于Web攻击的方式发现并攻击物联网设备介绍
基于Web攻击的方式发现并攻击物联网设备介绍
61 4
|
3月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
134 4
|
3月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
113 2
|
3月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
147 3
|
3月前
|
SQL 安全 网络协议
Web 常见攻击方式
【10月更文挑战第25天】这些只是一些常见的 Web 攻击方式,实际上还有许多其他的攻击手段。为了防范这些攻击,需要采取一系列的安全措施,如输入验证、输出编码、安全配置、身份验证等。同时,也需要不断提高用户的安全意识,以减少被攻击的风险。
37 1
|
4月前
|
存储 缓存 数据库
缓存技术有哪些应用场景呢
【10月更文挑战第19天】缓存技术有哪些应用场景呢