Yahoo 邮箱存储型XSS

%e4%b8%8b%e8%bd%bd

前言

Yahoo邮箱安全漏洞于上周修复。 该漏洞允许攻击者读取受害者的电子邮件或创建病毒感染雅虎邮件帐户。

攻击需要受害者查看攻击者发送的电子邮件,但无需进一步的互动(如:点击链接或打开附件)。

它如何被发现

据去年报道的Yahoo邮箱漏洞将近一周年,我(JP)决定换个角度看一下Yahoo邮箱还有什么问题。我觉得从基本的HTML标签过滤寻找突破口可能性不大。不过,我在邮件撰写视图中,我发现了许多我去年没有关注到的附件选项。我写了一封包含不同类型附件的邮件并将其发送到外部邮箱。这样我就可以查看这封“原始”的邮件都包含了什么。

yahoo-attachment-options

例如,这里是“从云提供程序共享文件”选项。 这不会创建传统的电子邮件附件,但会将一些装饰性的HTML链接插入到Google文档或Dropbox中。

link-enhancr

HTML的data- * 自定义数据属性引起了我的注意。首先,我发现雅虎邮箱过滤器没有完全拦截我去年辛苦枚举的HTML属性。然后,因为data- * 自定义数据属性用来存储JavaScript使用的应用程序数据。因此,这里似乎存在一个新潜在攻击源。 它可以嵌入多个HTML属性并绕过 Yahoo的HTML过滤器和特殊处理。

为了进一步了解:data-* ,我查看了Chrome开发者工具中的Sources标签,并在邮件阅读视图加载的JavaScript文件中查找了数据网址的引用。我还发现一件事,雅虎邮件中YouTube链接也可以导致XSS。在电子邮件撰写视图中输入YouTube视频链接生成类似的“链接增强器卡”标记,它包括一组data- *:

yahoo-youtube

当包含这种标签的消息在Yahoo邮件中打开时,它将增加嵌入在IFRAME标签中的视频。视频旁边还显示一个分享按钮。 这些功能是通过Yahoo Mail的JavaScript代码使用所述data- *属性构建的。

我试着创建一个包含可以被恶意利用的“data- *”的电子邮件,成功了。病毒扩散得很快。在data-url值中插入报价符号会会破坏共享按钮的HTML。 只要网址指向白名单网站(如YouTube),就不会被进一步检查或重新编码。 该值用于设置div innerHTML以创建按钮。

下面是我的迷你测试用例:

%e6%8d%95%e8%8e%b7

在雅虎邮箱查看邮件时,链接增强JavaScript将使用data-url属性呈现按钮。属性中的HTML片段将在页面上呈现 – 具有任意onerror属性的<IMG>标记,这会导致攻击者提供的JavaScript被立即执行。

yahoo-xss2

出现问题的代码如下:

%e6%8d%95%e8%8e%b7

该函数被t.shareMenu.generateButton(r.cardUrl,s)调用,第一个参数是嵌入在电子邮件中的data-url属性的值。

我们可以看到,按钮HTML是通过简单的连接字符串形成的,其中之一是data-url值。

影响

这个bug的影响与去年的雅虎邮箱存储型XSS案例相同。

为了证明这个漏洞,我向Yahoo Security发送了一封电子邮件,当对方查看邮件时,恶意代码将利用AJAX读取用户收件箱内容并将其发送到攻击者服务器。 此外,去年的“签名病毒”payload 仍然有效。

讲解

当HTML由JavaScript生成并插入到文档中时,通过设置元素的innerHTML属性或调用document.write(),但没有正确处理用户输入值,就会出现基于DOM的XSS 。

或许通过设置element.innerHTML生成动态内容应该被视为反模式。 使用document.createElement(),element.setAttribute()等来处理DOM会跳过不必要的HTML解析/编码/解码阶段,即可消除基于DOM的XSS。

厂商回复

该漏洞已于11月12日通过HackerOne报告给雅虎安全部门,漏洞于2016年11月29日确定。雅虎奖励$100000给白帽子。

积分

该漏洞是 JoukoPynnönen(Klikki Oy,芬兰)发现的。

【文章来源:klikki.fi MottoIN 小编整理发布】

原创文章,作者:Tank,如若转载,请注明出处:http://www.mottoin.com/article/web/93559.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code