xss 利用"data:"来xss许多把"javascript:"关键字进行了过滤


http://hi.baidu.com/badzzzz/item/bdbafe83144619c199255f7b?qq-pf-to=pcqq.c2c




XSS with Data URI Scheme

以前一个机缘巧合,写过《利用data:进行XSS测试》,当时发现可以利用"data:"来xss许多把"javascript:"关键字进行了过滤的页面。

今晚又一个机缘巧合,重新接触到了data uri scheme,做了一些测试。这些测试都是基于Chrome和FireFox进行的。IE对data uri scheme

有严格的限制,没啥搞头的。

HTML中支持标签属性内嵌入data uri scheme的有:

object   iframe   anchor  img 等。(欢迎大家补充)

但是img的src属性赋值为data:形式是不允许执行js的,但可载入远程图片,如wikipedia中举例:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQA

AAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBH

SU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMM

cXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot"/>

而object的data属性及iframe的src属性均可用于执行js:

<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></iframe>

其实这些都是跟javascript类似的,不赘述。在这个基础上考虑利用的话,可以利用data来bypass一些过滤了javascript的网站

重点来了,在渲染data:的时候,chrome和firefox采用了不同的处理方式

chrome认为data:是属于空白域的,而firefox认为data:是属于来源域的。

http://localhost/t.html

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+">test<a>

这就带来一个很有意思的问题了:也就是说,ff让data:所在域继承了他的来源域,导致了xss的隐患,给xss提供了机会。

考古发现,早在2004年就有人给firefox上报过这个问题,并在以后的许多年有许多人report过这个问题,但是firefox始终未进行修补。

百度空间发表文章处,对超链接<a>标签的href属性过滤了javascript关键字,但是并没有考虑到data uri scheme,利用这个特性,我们就可

搞出一个click xss来了。

d4rkwind说,他之前就是测试data uri scheme的时候副产出了mhtml的跨域问题来的。哈,有意思。

如何更深层次地在利用data:及如何把data uri scheme放到css中去xss,欢迎大家讨论

update: 通过虚虚的留言,发现“跨域”这个描述确实不对。我想Y了,已更改。灰常感谢kxlzx指正!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值