• 欢迎访问安全专题网站,安全专题信息,安全专题教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入安全专题 QQ群
  • 安全专题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏安全专题吧

雅虎邮箱存储型XSS漏洞,黑客能看任何人的邮件

安全事件 aqzt 1年前 (2016-12-20) 238次浏览 0个评论

最近来自芬兰 Klikki Oy 的研究员 Jouko Pynnönen 发表了一篇博客,其中演示了恶意攻击者如何利用 XSS 漏洞攻下雅虎邮箱,将受害者收件箱中的邮件发到外部站点;以及构建病毒,这个病毒可以通过向邮件签名中添加恶意脚本,附加在所有传出的电子邮件中。

由于恶意代码就位于邮件消息的正文中,代码会在受害者打开邮件时立即执行,不需要其他交互过程。所有问题的症结实际上在于雅虎邮箱无法正确过滤 HTML 邮件中潜在的恶意代码。

以下是对这名研究人员博客文章的内容编译:

发现历程

离去年给雅虎挖洞也快一周年了,这个时间点我也打算再来一发。一开始我觉得基本的 HTML 过滤应该不会再有漏洞了,但在最近写邮件的时候,我发现了很多添加附件的选项,这些选项我去年倒是没有太注意。然后我写了一封邮件,里面包含各种附件,并发到某外部邮箱,这样我就可以检查邮件的 HTML 源码了。

雅虎邮箱存储型 XSS 漏洞,黑客能看任何人的邮件

雅虎邮箱提供了一项功能,可以从云服务中分享文件。在邮件中进行分享之后,文件不会附在邮件的附件中,而是会使用 HTML 代码插入一个链接,比如 Google 文档/Dropbox 的链接。

雅虎邮箱存储型 XSS 漏洞,黑客能看任何人的邮件

在此,data-* HTML 属性吸引了我的注意。首先是因为我去年穷举了一些雅虎邮箱过滤所允许的 HTML 属性,但是没有能够穷举出全部属性。第二,由于 data-*属性存储的为 Javascript 所用的特定应用数据,所以这可能是个不错的攻击切入点。也就是说,可以在邮件中嵌入一些 HTML 属性绕过雅虎邮箱的过滤。

为了进一步了解 data-*属性,我使用 Chrome 的开发者工具进入源码标签,寻找 JavaScript 文件中引用的 data-url 属性。我发现 YouTube 的链接也会被雅虎邮箱“优化”,如果你在邮件中输入 Youtube 的视频链接,雅虎邮箱就会自动帮你生成一个“链接加强卡片”,如下图所示,卡片中会包含一些 data-*属性。

雅虎邮箱存储型 XSS 漏洞,黑客能看任何人的邮件

当用户打开包含这类“卡片”的邮件,雅虎就会通过<IFRAME>嵌入视频,视频旁边还会有一个分享按钮,这些功能就是通过雅虎邮箱 JS 代码的 data-*属性实现的。

接下来,我尝试用 data-*属性构造邮件,漏洞有了!如果我们在 data-url 这个值中插入引号,就会导致分享按钮的 HTML 无法正确解析。而只要 URL 指向的网站在雅虎的白名单中,比如指向 Youtube,雅虎就不会再进行检查或者编码。data-url 的值会被用来设置 innerHTML div 创建按钮:

我进行的测试如下:

From: <attacker@attacker.com> Subject: hello To: victim@yahoo.com MIME-Version: 1.0 Content-type: text/html  <div class="yahoo-link-enhancr-card" data-url="https://www.youtube.com/aaa&quot;&gt;&lt;img src=x onerror=alert(/xss/)&gt;&lt;"> <div class="card-share-container"> <a class="enhancr-play-btn"></a> </div></div>

当我从雅虎邮箱打开邮件时,那段针对链接进行“优化”的 JavaScript 代码会使用 data-url 属性来渲染按钮。而隐藏在属性中的 HTML 片段也会随之加载,我所添加的 HTML 代码是一个包含 onerror 属性的<IMG>,攻击者的恶意代码也就得以执行。

雅虎邮箱存储型 XSS 漏洞,黑客能看任何人的邮件

实际上,这个问题的症结可以追溯到雅虎邮箱的一个函数:

function generateButton(e,t) {    var n=this,r;    t.insert(['<button data-share-url="',e,'" class="',o,'"> /                    <span class="icon icon-social"></span> /                    </button>'].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 万美元的赏金。

*参考来源:klikki,本文作者:Sphinx,转载请注明来自 FreeBuf(FreeBuf.com)


Selinux 中国 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:雅虎邮箱存储型 XSS 漏洞,黑客能看任何人的邮件
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址