macOS Office Sandbox Bypasses
通过启动代理绕过Word沙箱
该应用程序使用一个自定义沙箱,使用权限**com.apple.security.temporary-exception.sbpl
**,这个自定义沙箱允许在文件名以~$
开头时在任何地方写入文件:(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
因此,绕过很容易,只需在~/Library/LaunchAgents/~$escape.plist
中编写一个plist
启动代理。
查看原始报告。
通过登录项和zip绕过Word沙箱
请记住,从第一个逃逸开始,Word可以写入任意以~$
开头的文件,尽管在修补了先前漏洞之后,无法在/Library/Application Scripts
或/Library/LaunchAgents
中写入。
在沙箱内发现可以创建一个登录项(用户登录时将执行的应用程序)。但是,这些应用程序不会执行,除非它们经过公证,并且无法添加参数(因此无法使用**bash
**运行反向shell)。
从先前的沙箱绕过中,Microsoft禁用了在~/Library/LaunchAgents
中写入文件的选项。但是,发现如果将zip文件作为登录项,Archive Utility
将只是在当前位置解压缩它。因此,由于默认情况下~/Library
中的LaunchAgents
文件夹未创建,可以在~/Library
中压缩一个plist文件LaunchAgents/~$escape.plist
,并将zip文件放在**~/Library
**中,因此在解压缩时将到达持久性目的地。
查看原始报告。
通过登录项和.zshenv绕过Word沙箱
(请记住,从第一个逃逸开始,Word可以写入任意以~$
开头的文件)。
然而,先前的技术有一个限制,如果文件夹**~/Library/LaunchAgents
**存在,因为其他软件创建了它,它将失败。因此,为此发现了不同的登录项链。
攻击者可以创建带有执行负载的文件**.bash_profile
和.zshenv
,然后将它们压缩并将zip文件写入受害者的用户文件夹:~/~$escape.zip
**。
然后,将zip文件添加到登录项,然后添加**Terminal
应用程序。当用户重新登录时,zip文件将解压缩到用户文件中,覆盖.bash_profile
和.zshenv
**,因此终端将执行其中一个文件(取决于使用的是bash还是zsh)。
查看原始报告。
使用Open和环境变量绕过Word沙箱
从沙箱化进程仍然可以使用**open
**实用程序调用其他进程。此外,这些进程将在其自己的沙箱中运行。
发现open
实用程序具有**--env
选项,用于使用特定环境变量运行应用程序。因此,可以在沙箱内的文件夹中创建.zshenv
文件**,然后使用open
设置**HOME
变量**到该文件夹,打开Terminal
应用程序,该应用程序将执行.zshenv
文件(由于某种原因,还需要设置变量__OSINSTALL_ENVIROMENT
)。
查看原始报告。
使用Open和stdin绕过Word沙箱
**open
实用程序还支持--stdin
**参数(在先前的绕过之后,无法再使用--env
)。
问题在于,即使**python
由Apple签名,它也不会执行带有quarantine
**属性的脚本。但是,可以将脚本从stdin传递给它,因此它不会检查它是否被隔离:
放置一个带有任意Python命令的**
~$exploit.py
**文件。运行_open_
–stdin='~$exploit.py' -a Python
,这将使用我们放置的文件作为其标准输入运行Python应用程序。Python愉快地运行我们的代码,并且由于它是_launchd_的子进程,它不受Word沙箱规则的约束。
最后更新于