首页 网络安全 安全学院 查看内容

QQ Mail跨站脚本漏洞

2008-7-10 16:23 806 0

摘要: 漏洞说明:QQ Mail是Tencent公司提供的webmail服务,你可以使用你的QQ帐户来登陆使用Mail服务,具体的信息可以访问http://mail.qq.com/。但是80sec团队成员在Q...
关键词: 漏洞 Mail 内容 邮件 用户 字符串 处理 80sec function 标签

漏洞说明: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 <div>&lt;img src="http://src=" onerror="alert(x111)"&gt;</div> 漏洞解析: QQ Mail会自动解析邮件内容,发现匹配的链接将转换成HTML内容,由LinkMaker函数实现: function LinkMaker( str ) {return str.replace( /(https?:\/\/[\w.]+[^ \f\n\r\t\v\"\\\<\>\[\]\u2100-\uFFFF]*)|([a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+\.\w+)/ig, function( s, v1, v2 ) {if ( v2 )return [ '<a href="mailto:', v2, '">', v2, '</a>' ].join( “” );elsereturn [ '<a href="', s, '">', s, '</a>' ].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标签(&lt;将转换成”<”,&gt;将转换成”>”),如下的测试: <div id="contentDiv" class="body"><div>&nbsp;</div><div>&lt;img src="" onerror="alert(1);"&gt;</div></div><script>v=document.getElementById("contentDiv").innerText; //ie//v=document.getElementById("contentDiv").textContent; //FIREFOXalert(v)</script> 漏洞状态: 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,"&lt;").replace(/>/g,"&gt;"); //1993行 建议程序员使用DOM中的元素的时候要注意安全问题,这些元素还是由用户输入中带来的,使用之前还是需要过滤。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部