![]() |
CSRF with Flash |
Author: lake2 [80sec] [ 目录 ] 0×00 纯属扯淡 0×00 纯属扯淡 世界变化得太快,一不留神你就落后了。现在看来,CSRF也算老生常谈了,为了有点积极的意义,本文重点介绍一下利用flash进行CSRF攻击的一些手法,希望对你有点启发。 0×01 用flash发起CSRF攻击 flash功能丰富,当然也有向任意站点发送请求的API,而且发送的请求会继承是当前浏览器的会话——也就是说我们可以利用flash而不是js来控制 浏览器向目标URL发送请求,这就实现CSRF了。比如flash8中的loadVariables,flash9中的sendToURL都是可以实现这 个功能的(编译的时候本地回放安全性一项要选择“只访问网络”)。 编译好之后访问之,你会发现它会向百度POST数据哦,如果你的机器上有baidu.com的cookie,cookie也会发送出去的,这里就可以绕过 IE的隐私安全限制——如果你直接img或者iframe向baidu.com发送数据,呵呵,cookie是会被阻挡的。 0×02 超越JavaScript Hijacking JavaScript Hijacking其实也是一种CSRF,不过它着重在利用当前会话身份会拿到以JS形式返回的内容,进而得到JS中出现的敏感数据。一个典型的漏洞场景是,一些为ajax提供JS接口的Web程序,可能会把当前用户的资料输出到JS中。
编译好的flash在这里:http://www.0×54.org/lake2/flash/flashgetdemo.swf,访问之,它会把get.txt的内容显示在flash中。 0×03 flash的跨域策略 adobe为了限制flash加载任意页面,使用了一种跨域策略来进行限制。
以上策略就是允许来自*.example.com、www.friendOfExample.com和192.0.34.166的flash加载资源。 0×04 绕过flash的跨域策略 我们要进行CSRF,可能需要获取目标站点某些页面中的内容,这个时候就得想办法绕过flash的跨域策略。 0×05 flash的限制措施 flash的网络功能太强大,所以它本身也有一套限制措施。那就是在启用flash的标签<object>和<embed>中设置allowNetworking参数。 ·all —— 允许所有的网络 API 每个选项具体禁止哪些函数请参考ActionScript手册。这里要说明的是如果不设置 allowNetworking,默认为all;不通过网页调用而直接访问swf文件,allowNetworking也为all。 0×06 Windows Media Player的隐患 我们可以在网页调用Windows Media Player来播放视频,呃,如果你安装了flash控件,那么Windows Media Player也会播放flash。如果flash中包含向外发送数据的脚本,那么,它也会被执行——大概就类似allowNetworking被设置成了 internal。这是一个绝佳的CSRF载体。 0×07 防范措施 了解了威胁之后再来看防御手段就再简单不过。 0×08 后记 有什么意见可以和我交流,请发邮件到lake2#80sec.com。BTW,CSDN那个邮箱已经废了-_-!! |