雅虎邮箱存储型XSS缝隙,黑客能看任何人的邮件 8090安适门户
比来来自芬兰Klikki Oy的研究员Jouko Pynnönen发表了一篇博客,此中演示了恶意打击者如何操作XSS缝隙霸占雅虎邮箱,将受害者收件箱中的邮件发到外部站点;以及构建病毒,这个病毒可以通过向邮件签名中添加恶意脚本,附加在所有传出的电子邮件中。
由于恶意代码就位于邮件动静的正文中,代码会在受害者打开邮件时当即执行,不需要其他交互过程。所有问题的症结实际上在于雅虎邮箱无法正确过滤HTML邮件中潜在的恶意代码。
以下是对这名研究人员博客文章的内容编译:
发明历程
离去年给雅虎挖洞也快一周年了,这个时间点我也筹算再来一发。一开始我感受根基的HTML过滤应该不会再有缝隙了,但在比来写邮件的时候,我发明了很多添加附件的选项,这些选项我去年却是没有太注意。然后我写了一封邮件,里面包罗各类附件,并发到某外部邮箱,这样我就可以查抄邮件的HTML源码了。
雅虎邮箱供给了一项成果,可以从云处事中分享文件。在邮件中进行分享之后,文件不会附在邮件的附件中,而是会使用HTML代码插入一个链接,好比Google文档/Dropbox的链接。
在此,data-* HTML属性吸引了我的注意。首先是因为我去年穷举了一些雅虎邮箱过滤所允许的HTML属性,但是没有能够穷举出全部下性。第二,由于data-*属性存储的为Javascript所用的特定应用数据,所以这可能是个不错的打击切入点。也就是说,可以在邮件中嵌入一些HTML属性绕过雅虎邮箱的过滤。
为了进一步了解data-*属性,我使用Chrome的开发者工具进入源码标签,寻找JavaScript文件中引用的data-url属性。我发明YouTube的链接也会被雅虎邮箱“优化”,如果你在邮件中输入Youtube的视频链接,雅虎邮箱就会自动帮你生成一个“链接加强卡片”,如下图所示,卡片中会包罗一些data-*属性。
当用户打开包罗这类“卡片”的邮件,雅虎就会通过嵌入视频,视频旁边还会有一个分享按钮,这些成果就是通过雅虎邮箱JS代码的data-*属性实现的。
接下来,我测验考试用data-*属性结构邮件,缝隙有了!如果我们在data-url这个值中插入引号,就会导致分享按钮的HTML无法正确解析。而只要URL指向的网站在雅虎的白名单中,好比指向Youtube,雅虎就不会再进行查抄或者编码。data-url的值会被用来设置innerHTML div创建按钮:
我进行的测试如下:
From:
Subject: hello
To: victim@yahoo.com
MIME-Version: 1.0
Content-type: text/html
"><img src=http://www.8090-sec.com/archives/5896/x onerror=alert(/xss/)><">
当我从雅虎邮箱打开邮件时,那段针对链接进行“优化”的JavaScript代码会使用data-url属性来衬着按钮。而隐藏在属性中的HTML片段也会随之加载,我所添加的HTML代码是一个包罗onerror属性的,打击者的恶意代码也就得以执行。
实际上,这个问题的症结可以追溯到雅虎邮箱的一个函数:
function generateButton(e,t) {
var n=this,r;
t.insert([',e,'"> \
\
'].join(""));
r=t.one("."+o);
n._attachButtonListeners(r);
}
这个函数名称为t.shareMenu.generateButton(r.cardUrl,s),第一个参数就是邮件中嵌入的data-url属性。
可以看到,底部HTML的部分就是直接把字符串拼接了起来,没有做任何改削。
影响
这次发明的这个缝隙的影响跟去年的XSS缝隙实际上是一样的。
为了证明缝隙的存在性,我给雅虎安适部门发了一封邮件,邮件打开时,会使用AJAX读取用户收件箱中的邮件内容,并把它发送到打击者的处事器。
作者已经于11月12日通过HackerOne向雅虎安适提交了缝隙,11月29日雅虎供给了1万美元的赏金。
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12986.html