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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月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)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3天前
|
缓存 应用服务中间件 nginx
Web服务器的缓存机制与内容分发网络(CDN)
【8月更文第28天】随着互联网应用的发展,用户对网站响应速度的要求越来越高。为了提升用户体验,Web服务器通常会采用多种技术手段来优化页面加载速度,其中最重要的两种技术就是缓存机制和内容分发网络(CDN)。本文将深入探讨这两种技术的工作原理及其实现方法,并通过具体的代码示例加以说明。
23 1
|
13天前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
28 1
|
3天前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
21 3
|
3天前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
16 2
|
6天前
|
前端开发 JavaScript 开发者
震惊!Web 前端 href 与 src 竟有如此差异,快来一探究竟,掌握热门技术核心要点
【8月更文挑战第26天】在Web前端开发中,`href`与`src`是两个常用属性,但其差异常被忽视。`href`(超文本引用)用于创建文档间的链接关系,如链接至外部网页或引入CSS文件;`src`(来源)则用于在文档内嵌入资源,如图片或JavaScript文件。两者在使用场景及加载机制上有所不同:`href`支持并行下载且不阻塞渲染,适合非关键资源加载;而`src`加载时会暂停页面渲染直至资源加载完成,适用于如图片和脚本这类对页面显示至关重要的资源。因此,正确理解并运用这两个属性对于保障网页性能和用户体验至关重要。
28 3
|
6天前
|
存储 移动开发 前端开发
HTML5时代来临,这些新特性你掌握了吗?一篇文章带你玩转Web前端技术潮流!
【8月更文挑战第26天】HTML5(简称H5)作为新一代Web标准,相比HTML4带来了诸多增强功能。
19 2
|
3天前
|
前端开发 JavaScript API
Web服务器与前端技术的集成
【8月更文第28天】随着Web开发技术的发展,现代前端框架如React、Vue.js等已经成为构建复杂Web应用的标准工具。为了提供更好的用户体验,这些前端应用通常需要与后端Web服务器进行紧密集成。本文将详细介绍如何将React和Vue.js与后端Web服务器无缝集成,以创建高性能且用户友好的Web应用。
12 0
|
7天前
|
缓存 运维 网络协议
一台新PC进行Web页面请求的历程:技术深度剖析
【8月更文挑战第24天】在当今数字化时代,当我们轻轻点击浏览器上的一个链接,背后其实经历了一场复杂而精妙的交互过程。本文将带您深入探索,从一台全新PC的角度出发,揭秘Web页面请求的全过程,展现这背后隐藏的技术奥秘。
17 0
|
8天前
|
安全 网络安全 PHP
云计算与网络安全:技术融合下的新挑战PHP 在现代Web开发中的角色和挑战
【8月更文挑战第23天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种便利性也带来了前所未有的网络安全风险。本文将探讨云计算环境中的网络安全挑战,分析信息安全的关键问题,并提出相应的防护措施。我们将深入讨论如何通过策略和技术的结合来增强云安全,确保数据的安全和隐私保护。
|
16天前
|
移动开发 小程序 前端开发
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
下一篇
云函数