首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

预防跨站点请求伪造:了解浏览器选项卡中的隐藏危险(1)

预防跨站点请求伪造:了解浏览器选项卡中的隐藏危险(1)

简介IBM Security AppScan Standard
IBM® Security AppScan® Standard 可帮助识别应用程序中潜在的 XSRF 漏洞。可从 developerWorks                    下载和试用  。

有时您可能在想,您是否变得健忘了。您可能会扪心自问,“我什么时候在社交网络帐户中向这个网站提交了一个链接?”                一些人甚至都不会注意到。他们从朋友那里发现,他们的社交网络帐户上出乎意料地添加了一个成人网站的链接。
事实证明,您在浏览器选项卡中打开的其他网站可能会代表您执行操作。
假设您在一个选项卡中打开您的社交网络站点,在另一个选项卡中打开另一个称为 many_ads.com 的网站。您并不知道,many_ads.com                是一个恶意网站。many_ads.com 网站可向您的社交网络站点发出消息。此操作称为跨站点请求伪造(简称 XSRF 或 CSRF)。
尽管这种恶意发布很讨厌且会令人尴尬,但也没有什么大不了的,是吗?您随时可删除发布的信息。
但 XSRF 攻击会让您损失金钱。如果您的银行站点容易受到 XSRF                    攻击,您可能会向一个未知的海外账户付款,并且表面上看起来是您支付的。事实上,根据服务器日志来看, 您自己完成的付款。
攻击场景假设一家名为 Altoro Mutual 的虚构银行有一个页面来处理向一个特定账号的转账。请求可能是这样的:
1
http://www.altoromutual.com/bank/transfer.aspx?creditAccount=1001160141&transferAmount=1000




攻击者注意到该链接,发现如果他让其他人访问该链接,他可向其海外账户转入任意多的资金。
他可能在电子邮件中发送该链接:
亲爱的 Altoro Mutual                        客户,
我们最近对服务器应用了一些安全改进,需要您重新验证您的帐户。
请单击下面的 继续。

但是,发送电子邮件可能暴露攻击者的意图,尤其是在用户最终在一个页面上看到以下信息时:已成功将 1000 美元转入账号 1001160141
如果攻击者可让用户非故意地访问他的链接,该怎么办?
对攻击者来说,方便的是,许多 Altoro Mutual 用户常常访问一个金融讨论论坛。在这个称为 Altoro Community                的虚构网站上,您可在您的论坛帖子中创建头像。
论坛头像是一张图,可能就像这张普通的人像图片:
图 1. AltorJ Community 网站头像的示例图像用户帖子中的头像可能类似于这个例子:
表 1. 论坛帖子中的 AltorJ Community 头像示例头像示例帖子示例
Evil Hacker
50 篇帖子                             大家好,

我想问是否有人看到了最新的 Altoro 财务报表。                        
该社区网站允许用户为一个自定义的头像指定一个 URL。该头像通常通过填写一个字段来指定,就像这个示例:
表 2. 指定一个自定义头像示例字段示例 URL 指定您的头像:                             http://some_image_site_found_with_google/random_image.jpg

如果攻击者使用转账链接作为头像,情况会怎样?例如:
表 3. 攻击者指定一个头像示例字段示例 URL 指定您的头像:                             http://www.altoromutual.com/bank ... =1001160141&transferAmount=1000                        
现在,用户每次访问社区论坛并查看攻击者编写的帖子时,该请求就会在浏览器尝试加载头像时执行。攻击者头像的图片不会加载。每个访问该论坛主题的用户都会将钱转给攻击者,只要该用户也在另一个浏览器选项卡中登录到                Altoro 网上银行。
图 2. 攻击者编写的缺少头像图片的示例帖子您可能会告诉自己,“好吧,我使用表单来转账,所以肯定不会受影响!”
确实,大部分转账请求都是通过提交表单请求来发起的,攻击者很难像头像示例那样利用这些请求。但攻击者有办法解决表单请求。攻击者可设计一个页面,其中包含一个从恶意网站提交转账请求的表单。
攻击者无法将该页面用作头像,但可让它看起来像某种财务博客,吸引受害者访问它。
恶意网站上的页面可能类似于  :
清单 1. 恶意网页代码示例
1
2
3
4
5
6
7
8
9
10
11
<html>
<body onLoad="document.getElementById('transferForm').submit()">

<form id="transferForm" action="http://www.altoromutual.com/bank/transfer.aspx" method="post">

<input type="hidden" name="creditAccount" value="1001160141">
<input type="hidden" name="transferAmount" value="10">

</form>

</body>




请注意,这个表单会在加载该 URL 时自动提交。无需来自用户的交互。
返回列表