云开·全站体育app登录 看我如何黑掉 Outlook 安卓 app,找到 CVE-2019-1105

发布于:25-01-19 播放次数:

android邮件客户端_邮件安卓端客户手机怎么登录_安卓手机邮件客户端

关注源码安全,搜集国内外最新资讯!

编译:奇安信码卫团队

本文是对之前发表的文章《的详细技术分析》。

发现

这一切都始于 2018 年 12 月,当时一位朋友给我发电子邮件云开·全站体育app登录,帮助我查看他正在编写的一些 JavaScript 代码。虽然我没有积极寻找错误,但我发现从 Android 手机查看电子邮件格式看起来很奇怪。下图是我当时收到的邮件截图。

android邮件客户端_邮件安卓端客户手机怎么登录_安卓手机邮件客户端

那个灰色盒子是什么?经过仔细检查,我发现此 JavaScript 可能包含内联框架的 HTML 代码,这些代码通常会在移动应用程序外部呈现。但它看起来也很奇怪。而且当我在笔记本中查看代码时,显示正常,如图:

android邮件客户端_安卓手机邮件客户端_邮件安卓端客户手机怎么登录

这让我很困惑:将 iframe 嵌入电子邮件的能力已经是一个漏洞。更糟糕的是,因为此 iframe 不受阻止外部图像设置阻止跟踪像素和网络信标的影响。但如果攻击者能够获得在电子邮件中运行 JavaScript 的能力,则存在更危险的攻击媒介。

所以我尝试在电子邮件中插入脚本标签而不是内联框架,但失败了,这是一件好事。不过,我可以在内联框架中使用 JavaScript URL 来规避这个问题。事情似乎变得更有趣了。

通过电子邮件存储的 XSS

在 Web 浏览器中,可以使用以 javascript 开头的 URL 运行 JavaScript 代码:但在 Web 浏览器中,单独域上的内联框架中的 JavaScript 不应能够访问页面其余部分中的数据。 Outlook for Android 中没有此类限制。我的 iframe JavaScript 可以完全访问 cookie、令牌甚至一些电子邮件。不仅如此开yun体育app官网网页登录入口,我还可以将它们发送给远程攻击者。

攻击者可以通过发送包含 JavaScript 的电子邮件来利用此漏洞。服务器转义 JavaScript 并且不会检测到它,因为它存在于内联框架中。交付后,邮件客户端会自动反转传输并在客户端设备上运行 JavaScript。毫无疑问,这是一个存储型XSS漏洞。该代码可以帮助攻击者执行任何操作,包括窃取信息和/或发回信息。攻击者可以向用户发送电子邮件kaiyun全站网页版登录,并在用户开始阅读电子邮件后窃取收件箱的内容。如果武器化,它可能会变成非常讨厌的恶意软件。

披露尝试

这是一个大问题,所以我需要通知微软。在披露之前,我创建了一个简短的 PoC 来演示该漏洞。它运行任意外部脚本来窃取和泄露个人信息(尽管不可否认,它对电子邮件数据的访问权限有限)。 2018 年 12 月 10 日,我向 Microsoft 安全响应中心 (MSRC) 通报了该问题。

目前我还不知道到底是哪部分代码触发了这个漏洞。此外,我不知道,因为我无权访问 Outlook 源代码。另外,我没有调试移动应用程序的经验。另外,我认为应用程序开发人员可以很容易地通过我的 PoC 发现问题。

不幸的是,工程团队无法重现该漏洞。我很困惑,也有点担心。这显然是一个问题,我需要让微软来解决它。所以我发送了该错误的视频。后来我了解到另一位研究员也报告了这个问题,但他的PoC未能重现该bug。

我测试了不同的 Outlook 设置以查找差异的原因,但无济于事。于是这件事就暂时搁置了。

不复发,无bug

几乎每个安全工程师和开发人员都会告诉你,无法重现已提交的漏洞是一件非常头疼的事情;他们的时间对于企业来说是宝贵且有限的资源。组织只能花费这么多精力来重现错误。如果它无法重现,那么可以合理地假设攻击者也无法重现它。因此,工程师和维护人员就到此为止,通常让研究人员有责任找到一种方法来创建安全工程师可以轻松确认、识别并有望修复的 PoC。

突破

我不能放手。几个月后,我仍在思考这个漏洞以及为微软安全工程师创建 PoC 的难度。我仍然记得这个漏洞,并思考如何从应用程序中提取渲染的 HTML。我意识到问题的关键在于漏洞本身!这个漏洞允许我从应用程序中窃取数据,并且我能够读取和提取 HTML。

我使用这些信息构建了一个新的有效负载,如屏幕截图所示:

邮件安卓端客户手机怎么登录_安卓手机邮件客户端_android邮件客户端

我构建的有效负载如下:

该漏洞发生在服务器端代码中,该代码使电话号码可点击。我无法重现它的原因是因为我的Android本地化设置设置为英国,导致该号码被判断为有效的电话号码。其他地方的设置不会检测电话号码,因此该漏洞不存在。

所以,我重写了PoC,使用完整的美国电话格式,即xxx-xxx-xxxx。经过测试,发现在不同的区域设置下都可以重现。然后我向微软通报了这个问题。 2019 年 3 月 26 日,微软确认了该问题再次发生,并在 90 天内提供了修复。

时间线