Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2023-11-01 18:41:35 +00:00
parent 9af0f8d67f
commit d5c27e7d73
2 changed files with 41 additions and 28 deletions

View file

@ -14,7 +14,7 @@
## POSIX权限组合
目录的权限:
**目录**的权限:
* **读取** - 可以**枚举**目录条目
* **写入** - 可以**删除/写入**目录中的文件
@ -24,35 +24,39 @@
如何覆盖由root拥有的文件/文件夹,但是:
* 路径中的一个父目录所有者是用户
* 路径中的一个父目录所有者是具有**写入权限**的**用户组**
* 路径中的一个父**目录所有者**是用户
* 路径中的一个父**目录所有者**是具有**写入权限**的**用户组**
* 用户组对文件具有**写入**权限
使用上述任何组合,攻击者可以通过在预期路径中**注入**一个**符号/硬链接**来获得特权任意写入。
使用上述任何组合,攻击者可以通过**注入**一个**符号/硬链接**到预期路径来获得特权任意写入。
### 文件夹根目录 R+X 特殊情况
如果有文件位于**只有root具有R+X访问权限的目录**中,则其他人无法访问这些文件。因此,如果存在漏洞允许将一个由用户可读但由于该**限制**而无法读取的文件从该文件夹**移动到另一个文件夹**,则可以滥用漏洞来读取这些文件。
如果一个**目录**中有文件,其中**只有root具有R+X访问权限**,那些文件对其他人是**不可访问的**。因此,如果存在一个漏洞,允许将一个由用户可读但由于该**限制**而无法读取的文件从该文件夹**移动到另一个文件夹**,则可以滥用漏洞来读取这些文件。
示例:[https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions)
## 符号链接 / 硬链接
如果一个特权进程正在写入**文件**,该文件可能由**权限较低的用户**控制,或者可能是**之前由权限较低的用户创建**的。用户可以通过符号链接或硬链接将其指向另一个文件,特权进程将在该文件上进行写入。
如果一个特权进程正在写入**文件**,该文件可能被**低权限用户**控制,或者可能是由低权限用户**先前创建**的。用户可以通过符号链接或硬链接**将其指向另一个文件**,特权进程将在该文件上进行写入。
在其他部分中查看攻击者可以**滥用任意写入来提升权限**的地方。
## 任意FD
如果你可以让一个**进程以高权限打开一个文件或文件夹**,你可以滥用**`crontab`**来以**`EDITOR=exploit.py`**的方式打开`/etc/sudoers.d`中的文件,这样`exploit.py`将获得`/etc/sudoers`中的文件的FD并滥用它。
如果你可以让一个**进程以高权限打开文件或文件夹**,你可以滥用**`crontab`**来使用**`EDITOR=exploit.py`**打开`/etc/sudoers.d`中的文件,这样`exploit.py`将获得`/etc/sudoers`中的文件的FD并滥用它。
例如:[https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098)
## 避免隔离xattrs的技巧
### uchg / uchange / uimmutable标志
### 删除它
```bash
xattr -d com.apple.quarantine /path/to/file_or_app
```
### uchg / uchange / uimmutable 标志
如果一个文件/文件夹具有这个不可变属性就无法在其上放置xattr
如果一个文件/文件夹具有这个不可变属性,就无法在其上放置 xattr
```bash
echo asd > /tmp/asd
chflags uchg /tmp/asd # "chflags uchange /tmp/asd" or "chflags uimmutable /tmp/asd"
@ -98,7 +102,7 @@ ls -le /tmp/test
```
### **com.apple.acl.text xattr + AppleDouble**
**AppleDouble**文件格式会将文件及其ACE访问控制项一起复制
**AppleDouble**文件格式会复制包括ACEs在内的文件
在[**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)中,可以看到存储在名为**`com.apple.acl.text`**的xattr中的ACL文本表示将被设置为解压后文件的ACL。因此如果您将应用程序压缩为使用**AppleDouble**文件格式的zip文件并且该ACL阻止其他xattr写入它...则隔离xattr不会设置到应用程序中

View file

@ -7,12 +7,12 @@
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)****
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>
在这个页面中,您可以找到如何创建一个应用程序以从默认的macOS沙盒内部启动任意命令:
在这个页面中,你可以找到如何创建一个应用程序在默认的macOS沙盒中启动任意命令:
1. 编译应用程序:
@ -74,17 +74,8 @@ EOF
```
3. 定义授权
Entitlements授权的定义是指在沙盒环境中为应用程序提供特定权限的规则集合。这些规则决定了应用程序可以访问哪些资源和执行哪些操作。授权可以通过配置应用程序的沙盒配置文件.entitlements来定义。
在macOS中授权可以包括以下几个方面
- 文件和文件夹访问权限:授权应用程序访问特定文件和文件夹的能力。
- 网络访问权限:授权应用程序访问网络资源的能力,如访问特定的域名或端口。
- 硬件访问权限:授权应用程序访问硬件设备的能力,如摄像头、麦克风等。
- 进程间通信权限:授权应用程序与其他进程进行通信的能力。
- 系统特权权限:授权应用程序执行需要管理员权限的操作,如安装软件、修改系统设置等。
通过定义适当的授权,可以确保应用程序在沙盒环境中仅能访问必要的资源和执行必要的操作,从而提高系统的安全性。
{% tabs %}
{% tab title="沙盒" %}
```bash
cat << EOF > entitlements.plist
<?xml version="1.0" encoding="UTF-8"?>
@ -97,7 +88,25 @@ cat << EOF > entitlements.plist
</plist>
EOF
```
4. 对应用程序进行签名(您需要在钥匙串中创建一个证书)
{% tab title="沙盒 + 下载" %}
```bash
cat << EOF > entitlements.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
</dict>
</plist>
EOF
```
{% endtab %}
{% endtabs %}
4. 对应用程序进行签名(您需要在钥匙串中创建证书)
```bash
codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp
@ -109,10 +118,10 @@ codesign --remove-signature SandboxedShellApp.app
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取最新版本的PEASS或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取最新版本的PEASS或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* 获[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或者 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>