您所在的位置:网络安全 > 安全观察 > 深入解析跨站请求伪造漏洞:实例讲解(1)

深入解析跨站请求伪造漏洞:实例讲解(1)

2008-12-24 08:34 宇文 51CTO.com 字号:T | T
一键收藏,随时查看,分享好友!

在下篇中,我们将向读者介绍在一些大型站点上发现的几个严重的CSRF漏洞,攻击者利用这些漏洞不仅能够采集用户的电子邮件地址,侵犯用户隐私并操控用户帐户。如果金融站点出现了跨站请求伪造漏洞的话,这些漏洞甚至允许攻击者从用户的银行帐户中划走资金。

AD:

【51CTO.com 独家特稿】本文的上篇中,我们着重介绍了跨站请求伪造的原理,并指出现有的安全模型并不能真正防御这种攻击。在下篇中,我们将向读者介绍在一些大型站点上发现的几个严重的CSRF漏洞,攻击者利用这些漏洞不仅能够采集用户的电子邮件地址,侵犯用户隐私并操控用户帐户。如果金融站点出现了跨站请求伪造漏洞的话,这些漏洞甚至允许攻击者从用户的银行帐户中划走资金。为了全面的防御CSRF攻击,建议对服务器端进行改造。此外,本文还会介绍服务器端解决方案应具备的特征,如果缺乏这些特性,就会导致CSRF保护措施不必要地妨碍典型的web浏览活动。除此之外,本文还将介绍一个客户端浏览器插件,有了该插件的保护,即使站点自身没有保护措施的情况下,用户也能免受某些类型的CSRF攻击的滋扰。跨站请求伪造是一种严重的Web漏洞,希望大家能提高对CSRF攻击的防范意识。

下面是安全人员于今年在现实世界中NYTimes.com、Metafilter 和YouTube曾经出现过的跨站请求伪造漏洞。

一、纽约时报网站上的跨站请求伪造漏洞

今年,安全人员曾在NYTimes.com上发现了一个CSRF弱点,它使得攻击者可以获取用户的电子邮件地址。如果您是NYTimes.com的会员,那么任何站点都能利用该漏洞来获取您的电子邮件地址,并以您的名义来发送垃圾邮件。

这个攻击充分地利用了NYTimes.com的“Email This”功能,它允许用户将一篇NYTimes.com文章的链接发送给用户指定的收信人的电子邮件地址,如果需要的话,同时可以附带个人消息。收信人将收到一封类似下面的电子邮件:

This page was sent to you by: [USER’S EMAIL ADDRESS]
Message from sender:
Thought you’d be interested in this.
NATIONAL DESK
Researchers Find Way to Steal Encrypted Data
By JOHN MARKOFF
A computer security research group has developed a way to steal encrypted information from computer hard disks.

要想利用该漏洞,攻击者需要设法让已登录用户的浏览器向NYTimes.com的“Email this”页面发送一个请求。由于接收“Email this”请求的页面没有对CSRF攻击采取有效措施,所以只要设法让用户的浏览器向NYTimes.com发送一个精心构造的请求,就会导致NYTimes.com发送一封电子邮件到攻击者所指定的地址。如果攻击者把收信人电子邮件地址指定为他自己的电子邮件地址,他将收到一封来自NYTimes.com电子邮件,当然其中必定含有某用户的电子邮件地址。

这个弱点的利用方法很简单。NYTimes.com上的每篇文章都有一个指向“Email this”页面的链接,而“Email this”页面含有一个表单,用户可以在其中输入一个收信人的电子邮件地址。这个表单还包含一些隐形的变量,这些变量随文章的不同而不同,所以这些隐形的变量具有唯一性。下面是表单示例:

{form
action="http://www.nytimes.com/mem/emailthis.html"
method="POST"
enctype="application/x-www-form-urlencoded"}
{nput type="checkbox" id="copytoself"
name="copytoself" value="Y"}
{input id="recipients" name="recipients"
type="text" maxlength="1320" value=""}
{nput type="hidden" name="state" value="1"}
{extarea id="message" name="personalnote"
maxlength="512"}/textarea}
{nput type="hidden" name="type" value="1"}
{nput type="hidden" name="url"
value="[...]"}
nput type="hidden" name="title"
value="[...]"}
nput type="hidden" name="description"
value="[...]"}
..
{form}

因为NYTimes.com没有区分GET和POST请求,所以攻击者可以把该表单转换成一个GET请求(这样就可以将来将其用于{mg}签中)。把表单转换成一个GET请求时,需要将每个参数附加到URL的查询字符串上(形式为NAME = VALUE,并用&号分隔)。

一旦攻击者构造好URL,他就可以把它设为{img}标签的SRC属性。如果某个NYTimes.com的已登录用户访问了任何包含上述标签的页面,那么浏览器就会用攻击者的参数来加载“Email this”页面,并引起NYTimes.com发送一封包含该用户的电子邮件地址的电子邮件给攻击者。攻击者可以存储这个电子邮件地址,以供将来之用(例如用于发送垃圾邮件)或者使用该电子邮件地址来识别他自己的站点的访客的身份。这可以引起严重的隐私泄漏,例如某些颇具争议的站点(例如政治的或者非法的站点)的管理员识别他们的用户的身份。

安全研究人员用Firefox、Opera 和Safari 等对该攻击进行了验证。由于P3P的原因,它对Internet Explorer无效。后来纽约时报将页面改成只允许POST请求,所以现在能够防止原来的攻击。

二、MetaFilter 网站的跨站请求伪造漏洞

同样是在今年,安全研究人员在MetaFilter发现了一个CSRF弱点,它允许攻击者劫持用户的帐户。MetaFilter有一个“Lost Password”页面,该页面允许用户请求他的口令。在该页面中输入一个用户名,MetaFilter就会把该用户的当前口令通过电子邮件发至该用户相应的邮件地址。这意味着,攻击者只要能够改变一个用户的电子邮件地址,他就能够利用“Lost Password”页面来接受该用户的口令,继而利用该口令来控制该用户的帐户。

研究人员发现的CSRF攻击允许攻击者改变一个用户的电子邮件地址。为了利用这个攻击,攻击者需要设法让用户的浏览器发送一个请求到更新用户概况的页面。这个页面将用户的电子邮件地址作为一位参数接收,所以,攻击者可以把传递给该页面的电子邮件地址换成他自己的地址。下面提供一个嵌入在一个页面中的HTML来演示这个攻击过程:

{mg src="http://metafilter.com/contribute/customize_action.cfm?user_email=[ATTACKER’S EMAIL]"/}

虽然这会改变任何已登录用户的电子邮件地址,但是攻击者不会知道到底修改了哪些用户的帐户。但是,攻击者可以通过利用MetaFilter的另一项功能来达到此目的,该功能使用户能将其他用户标记为“contacts”(即联系人)。 攻击者可以通过类似于像上面介绍的CSRF来设法让用户在不知不觉中将攻击者添加到他的联系人名单中。

研究人员用Firefox对该攻击进行了验证。不过由于P3P的原因,无法用Internet Explorer进行此项测试。

三、YouTube网站的跨站请求伪造漏洞

安全研究人员发现,在YouTube上几乎所有用户可以执行的动作都具有CSRF漏洞。如果攻击者已经将视频添加到用户的“Favorites”,那么他就能将他自己添加到用户的“Friend”或者“Family”列表,以用户的身份发送任意的消息,将视频标记为不宜的,自动通过用户的联系人来共享一个视频,为用户预订一个“channel”(一组由某个人或组提供的视频),将视频添加到用户的“QuickList”(一组用户打算将来观看的视频)。例如,要把视频添加到用户的

“Favorites”,攻击者只需在任何站点上嵌入如下所示的{mg}签:

{mg src="http://youtube.com/watch_ajax?action_add_favorite_playlist=1&video_
id=[VIDEO ID]&playlist_id=&add_to_favorite=1&show=1&button=AddvideoasFavorite"/}

攻击者也许已经利用了该漏洞来提高视频的流行度。例如,将一个视频添加到足够多用户的“Favorites”,YouTube就会把该视频作为“Top Favorites”(一组被大量收藏的视频)来显示。除提高一个视频的流行度之外,攻击者还可以导致用户在毫不知情的情况下将一个视频标记为“不宜的”,从而导致YouTube删除该视频。

这些攻击还可能已被用于侵犯用户隐私。YouTube允许用户只让朋友或亲属观看某些视频。这些攻击会导致攻击者将其添加为一个用户的“Friend”或“Family”列表,这样他们就能够访问所有原本只限于好友和亲属表中的用户观看的私人的视频。

攻击者还可以通过用户的所有联系人名单(“Friends”、“Family”等等)来共享一个视频。“共享”就意味着发送一个视频的连接给他们,当然还可以选择附加消息。这个消息可以包含一个连接,这就是说攻击者可以强迫用户包含一个具有攻击性的网站的链接。收到该消息的用户可能单击这个连接,这使得该攻击能够进行病毒式的传播。研究人员用Firefox对此攻击进行了验证。但是对于Internet Explorer来说,由于P3P的原因,无法用它对此漏洞进行攻击。



分享到:

热点职位

更多>>

热点专题

更多>>

读书

网络服务器配置与应用(第3版)
本书是由长期从事网络管理工作和网络工程人员培训工作的一线网管人员和教学人员精心编写,从现实的技术发展角度和实际应用的角度

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院