在MAC下的微信浏览器,与其他浏览器不同,通过在笔记中添加协议,在用户点击后会自动执行url scheme协议,用户无需确认即可执行。

下面列出几种可行的攻击方案,但是还没有找到一种比较完美的:

1、通过file协议可直接执行app文件,但是前提是需要文件落地,所以需要预先将文件传输,但是如果通过http等方式下载文件运行app是会触发到mac的Gatekeep机制导致无法直接运行、而在MAC OS10.15版本后通过smb等方式传输的文件会存在LSOpenURLsWithRole() failed with error -10810错误导致无法运行,即使你全部都绕过,攻击者仍然需要在知道文件路径的情况下,再让其点击链接,所以这种攻击难度较高。

2、通过MAC OS本身一些软件存在的URL Schemes,如果这些软件的URL Schemes存在漏洞或者可以bypass即可实现攻击,如通过cve-2020-9860,具体可以看https://blog.chichou.me/2020/07/01/x-site-escape-part-iii-cve-2020-9860-a-copycat/,但这

种攻击方式成本较高,需要配合MACOS上的漏洞或其他常用软件打组合拳才能RCE。我通过将本地所有的URL Schemes进行遍历。

找到ms-powerpoint:///etc/hosts,通过微软的PPT URL Schemes可以读取到本地的文件,

具体代码如下:

<html>

<p>Loading...</p>

<script type="text/javascript">

setInterval(() => {location = 'ms-powerpoint:///etc/hosts'}, 2000)

</script>

</html>

在这种情况下其实只需要找到一种,将文件重定向到外网服务器的方法即可读取到任意文件,虽然通过测试发现smb可以不用输入账户密码即可连接vps,但是由于我基本功太菜暂时没有找到如何传输。

3、利用自定义到URL Scheme远程突破MAC

WINDSHIFT APT组织曾经通过该方法远程感染MACOS目标主机,在MACOS中应用程序可以“声明”自己能够支持(或者“处理”)各种文档类型以及/或者自定义的URL Scheme,且自定义的方式非常简单只需要在APP文件中的Info.plist文件加入URL Type数组即可实现,而且只需要APP文件落地到目标机器,MACOS会自动查找APP文件中Info.plist文件是否存在URL Types如果存在自动注册。

通过MACOS默认的Safari浏览器下载压缩包,后会自动解压文件,从而文件落地自定义URL Scheme在通过点击链接触发自定义的URL Scheme。但是这种方式需要绕过Gatekeeper和文件隔离,Gatekeeper可以通过给APP文件签名绕过,文件隔离需要通过给文件名添加诱惑性文字,让其点击有点类似社工方式才能实现。虽然需要用户交互,然而这种功能已经在实际攻击活动中被成功利用。具体操作可以看https://www.anquanke.com/post/id/158679