hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md
2023-08-03 19:12:22 +00:00

6.7 KiB
Raw Blame History

macOS Office沙箱绕过

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

通过启动代理绕过Word沙箱

该应用程序使用一个使用权限com.apple.security.temporary-exception.sbpl自定义沙箱,这个自定义沙箱允许在文件名以~$开头的任何地方写入文件:(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))

因此,绕过沙箱很容易,只需在~/Library/LaunchAgents/~$escape.plist中编写一个plist启动代理。

查看原始报告

通过登录项和zip绕过Word沙箱

请记住从第一个逃逸开始Word可以写入以~$开头的任意文件)。

发现在沙箱内部可以创建一个登录项(用户登录时将执行的应用程序)。然而,这些应用程序只有在它们被签名并且不可能添加参数(因此无法使用**bash**运行反向shell时才会执行。

从之前的沙箱绕过中Microsoft禁用了在~/Library/LaunchAgents中写入文件的选项。然而,发现如果将一个zip文件作为登录项Archive Utility将会在当前位置解压缩它。因此,由于默认情况下~/Library中的LaunchAgents文件夹不会被创建所以可以将一个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--env将**HOME变量**设置为该文件夹,打开Terminal应用程序,它将执行.zshenv文件(由于某种原因,还需要设置变量__OSINSTALL_ENVIROMENT)。

查看原始报告

通过Open和stdin绕过Word沙箱

**open实用程序还支持--stdin**参数(在之前的绕过之后,无法再使用--env)。

问题是,即使**python由Apple签名它也不会执行带有quarantine**属性的脚本。然而可以将脚本从stdin传递给它这样它就不会检查它是否被隔离

  1. 放置一个带有任意Python命令的**~$exploit.py**文件。
  2. 运行_open_ stdin='~$exploit.py' -a Python它将使用我们放置的文件作为标准输入运行Python应用程序。Python愉快地运行我们的代码并且由于它是_launchd_的子进程它不受Word沙箱规则的限制。
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥