【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

  • A+
所属分类:安全文章

点击上方蓝字“Ots安全”一起玩耍

介绍

在这篇文章中,我将分享我在 iCloud 中发现的一个漏洞,该漏洞可能允许攻击者在另一个 iCloud 帐户中执行恶意代码。我们将看到如何利用攻击以及攻击者可以在受害者的帐户中做什么。


苹果和 iCloud

在德ç烬2020年,我遇到了一组研究人员谁砍死苹果3个月的惊人的鸣叫。在推文中分享的博客文章中,解释了 Apple 域中的 55 个漏洞。我花了很长时间阅读很棒的内容,然后我决定也尝试破解 Apple。

我的策略是专注于一个目标:iCloud。我一周的时间有限,因此我决定探索 iCloud 以了解功能、子域之间的交互并确定一些可能的使用方法。


XSS 漏洞

被利用的漏洞是在 iCloud Drive 中创建文件或文件夹过程中的跨站脚本。

简而言之,跨站脚本(又名 XSS)是一种安全漏洞,允许攻击者在受害者的浏览器上执行恶意代码。有不同的方法可以做到这一点,在BugCrowd 的这篇博文中,您可以找到有关此类攻击的很好的解释。


系统上下文

在 iCloud Drive 中,我们可以上传我们的文件并将它们整理到文件夹中。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

这些文件夹和文件可以与其他 iCloud 用户使用他们的电子邮件共享,或者我们可以简单地将文件/文件夹公开并将其链接共享给任何有兴趣访问它的 iCloud 用户。


在这里,共享功能在攻击环境中很重要,因为它允许攻击者以这种方式与受害者共享 XSS。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

XSS…

每个文件夹或文件都有一个图标,我们可以在其中查看详细信息和编辑名称

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

当小窗口打开时,连同其他信息,一个 HTML span 标签被注入到 DOM 中。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

由于服务器配置错误,攻击者将能够在目录名称中包含 HTML 标签,并将其加载到DOM 中。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

拥有在 DOM 中插入新元素的能力,攻击者将能够在页面上执行 javascript:

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

概念证明

在 iCloud Drive,他们有一个严格的CSP,当时不允许我使用脚本标签或从 *.icloud.com 和 *.apple.com 请求域,但我能够使用事件处理程序来执行 javascript来自 XSS。


一开始,我花了一些时间思考 XSS 可以做什么,我找到了 XSS 以及分享它的方式。我决定就此打住,并在其他人之前立即与 Apple 分享。


几天后,我向 Apple 发送了另一份报告以附加到票证中。

在最终的 POC 中,攻击者与受害者共享一个文件夹,文件夹名称为:

请编辑目录名称

<img src onerror="(function hacking(){//BAD JS STUFF}())"/>

在 Javascript 函数中,我添加了一个代码来执行一些对 iCloud API 的请求,以检索所有文件/文件夹 ID 并将它们移动到攻击者共享的文件夹中,从而允许攻击者访问所有受害者的文件。


最后,受害者的所有文件都会被 XSS 自动移动到该文件夹中,这就是本文开头对图像的解释。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

需要考虑的要点

在这种情况下,只有当受害者接受共享文件夹并决定打开小窗口时,XSS 才会被攻击者完全利用。如果小窗口没有打开,XSS 将不会被执行。


除此之外,当攻击者共享恶意文件夹时,受害者可以编辑名称并删除 XSS,但完成后,更改仅发生在受害者一侧。基于此,攻击者将能够与许多受害者共享同一个恶意文件夹,并可以访问所有打开小窗口的受害者的文件。


最后但并非最不重要的是,一旦攻击者能够看到共享文件夹中的受害者文件,攻击者就能够停止共享文件夹,窃取受害者的所有文件

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

最后,XSS 会将受害者的所有文件/文件夹移动到共享文件夹中,攻击者可以通过执行数据窃取方法来移除对受害者的访问权限。

【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

原文始发于微信公众号(Ots安全):【渗透测试】我如何通过入侵 iCloud 获得 9000 美元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: