Hello 520chovyer,
我测试了163的,怎么没有弹出了?过滤了啊?
Regards!
zheng918
email: [EMAIL PROTECTED]
2008-07-08
======= 2008-07-08 09:41:27 您在来信中写道:=======
> 怎么163也是这样,我一打开就弹了。
>
>
>
>
>
>[EMAIL PROTECTED] 写道:
>>漏洞说明:QQ Mail是Tencent公司提供的webmail服务,你可以使用你的QQ帐户来登陆使用Mail服务,具体的信息可以访问
>>http://mail.qq.com/。但是80sec团队成员在QQ Mail里发现存在跨站脚本漏洞,恶意用户可以通过该漏洞在邮件里伪造登陆表
>>单窃取目标用户的密码以及偷取Cookie以取得其他用户的身份,或者使用ajax等技术读取用户的敏感信息。
>>
>>漏洞成因:QQ Mail的Javascript Dom部分在处理邮件内容,对邮件内容字符串的处理分为str和code两个流程,通过组合的标签内
>>容可以误导Javascript处理图片内容和文字链接进入str流程,将HTML编码字符串还原为HTML标签。
>>
>>漏洞测试:(已经修复)
>>
>>发送如下内容即可引发XSS
>>
>>
>>
><img src="http://src=" onerror="alert(x111)">
>
>>
>>漏洞解析:
>>
>>QQ Mail会自动解析邮件内容,发现匹配的链接将转换成HTML内容,由LinkMaker函数实现:
>>
>>
>>function LinkMaker( str ) {
>>return str.replace( /(https?:\/\/[\w.]+[^ \f\n\r\t\v\"\\\<\>\[\]\u2100-
>>\uFFFF]*)|([EMAIL PROTECTED])/ig, function( s, v1,
>>v2 ) {
>>if ( v2 )
>>return [ '', v2, '' ].join( “” );
>>else
>>return [ '', s, '' ].join( “” );
>>} );
>>
>>SwapImg函数处理邮件中IMG标签:
>>
>>
>>function SwapImg(id, ajustValue)
>>{
>>var as = GelTags("img", S(id));
>>for (var i = 0; i < as.length; i++)
>>{
>>if (as[i].src)
>>{
>>ZoomImgToBody(as[i], ajustValue);
>>as[i].onload = function()
>>{
>>ZoomImgToBody(this, ajustValue, true);
>>};
>>}
>>}
>>}
>>
>>进入str流程将会使用DOM中的innerText和textContent处理字符串,邮件中的HTML编码字符串转成HTML标签(<将转
>>换成”<”,>将转换成”>”),如下的测试:
>>
>>
>>
>?
>
>>
><img src="" onerror="alert(1);">
>
>>
>>
>>漏洞状态:
>>
>>80sec于7.4号发现此漏洞
>>80sec于7.4号通知官方
>>Tencent于7.4号修复此漏洞
>>80sec于7.7号发布此漏洞公告
>>
>>漏洞解决:
>>
>>QQ Mail已经修补漏洞,转义字符串中的”<” ,”>”.
>>
>>修改js在http://res.mail.qq.com/zh_CN/htmledition20080626/js/all.js
>>
>>
>>var str = obj.nodeValue.replace(//g,">"); //
>>1993行
>>
>>建议程序员使用DOM中的元素的时候要注意安全问题,这些元素还是由用户输入中带来的,使用之前还是需要过滤。
>>
>>感谢幻影dummy和luoluo提供和调试该漏洞。
>>
>>
>>>
>
>
= = = = = = = = = = = = = = = = = = = =
--~--~---------~--~----~------------~-------~--~----~
要向邮件组发送邮件,请发到 [email protected]
要退订此邮件,请发邮件至 [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---