macOS Office Sandbox Bypasses
Word Sandbox Geçişi Launch Agentlar aracılığıyla
Uygulama, com.apple.security.temporary-exception.sbpl
yetkisi kullanarak özel bir Sandbox kullanır ve bu özel Sandbox, dosya adı ~$
ile başladığı sürece herhangi bir yere dosya yazmaya izin verir: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
Bu nedenle, kaçış işlemi, ~/Library/LaunchAgents/~$escape.plist
konumunda bir plist
LaunchAgent'ı yazmak kadar kolaydı.
Orijinal rapora buradan bakın.
Word Sandbox Geçişi Login Öğeleri ve zip ile
İlk kaçıştan hatırlayın, Word, ~$
ile başlayan keyfi dosyalar yazabilir, ancak önceki zafiyetin düzeltmesinden sonra /Library/Application Scripts
veya /Library/LaunchAgents
dizinlerine yazmak mümkün olmamıştır.
Sandbox içinden bir Giriş Öğesi (kullanıcı oturum açtığında çalıştırılacak uygulamalar) oluşturmanın mümkün olduğu keşfedildi. Ancak, bu uygulamalar imzalanmadıkça çalışmayacak ve argüman eklemek mümkün olmayacak (yani bash
kullanarak ters kabuk çalıştıramazsınız).
Önceki Sandbox geçişinden sonra, Microsoft ~/Library/LaunchAgents
dizinine dosya yazma seçeneğini devre dışı bıraktı. Ancak, bir zip dosyasını Giriş Öğesi olarak eklerseniz, Archive Utility
bunu mevcut konumunda sadece açacaktır. Bu nedenle, varsayılan olarak ~/Library
dizininde LaunchAgents
klasörü oluşturulmadığından, LaunchAgents/~$escape.plist
konumunda bir plist'i sıkıştırıp zip dosyasını ~/Library
dizinine yerleştirmek mümkün olmuştur, böylece açıldığında kalıcılık hedefine ulaşacaktır.
Orijinal rapora buradan bakın.
Word Sandbox Geçişi Login Öğeleri ve .zshenv ile
(İlk kaçıştan hatırlayın, Word, ~$
ile başlayan keyfi dosyalar yazabilir).
Ancak, önceki teknik bir kısıtlamaya sahipti, eğer ~/Library/LaunchAgents
dizini başka bir yazılım tarafından oluşturulduysa başarısız olacaktı. Bu nedenle, bunun için farklı bir Login Öğeleri zinciri keşfedildi.
Saldırgan, yürütülecek yükü içeren .bash_profile
ve .zshenv
dosyalarını oluşturabilir ve ardından bunları zipleyebilir ve zip dosyasını kurbanın kullanıcı klasörüne ~/~$escape.zip
yazabilir.
Daha sonra, zip dosyasını Login Öğeleri'ne ve ardından Terminal
uygulamasına ekleyin. Kullanıcı yeniden oturum açtığında, zip dosyası kullanıcının dosyasına sıkıştırılmadan açılacak ve .bash_profile
ve .zshenv
üzerine yazacak ve bu nedenle terminal bu dosyalardan birini yürütecektir (bash veya zsh kullanılıp kullanılmadığına bağlı olarak).
Orijinal rapora buradan bakın.
Word Sandbox Geçişi Open ve env değişkenleri ile
Sandbox süreçlerinden, diğer süreçleri open
yardımıyla çağırmak hala mümkündür. Dahası, bu süreçler kendi Sandbox'larında çalışacaktır.
open
yardımcı programının, belirli env değişkenleriyle bir uygulamayı çalıştırmak için --env
seçeneğine sahip olduğu keşfedildi. Bu nedenle, Sandbox'ın içinde bir klasörün içine .zshenv
dosyası oluşturmak ve open
'ı kullanarak --env
ile HOME
değişkenini o klasöre ayarlamak ve bu Terminal
uygulamasını açmak mümkün oldu, bu da .zshenv
dosyasını yürütecektir (bir nedenle değişken __OSINSTALL_ENVIROMENT
'in ayarlanması gerekiyordu).
Orijinal rapora buradan bakın.
Word Sandbox Geçişi Open ve stdin ile
open
yardımcı programı ayrıca --stdin
parametresini de desteklemektedir (ve önceki geçişten sonra --env
kullanmak artık mümkün değildi).
Mesele şu ki, python
Apple tarafından imzalanmış olsa bile, karantina
özniteliğine sahip bir betiği çalıştırmaz. Bununla birlikte, stdin'den bir betik geçirilebildiğinden, karantinaya alınıp alınmadığı kontrol edilmez:
Keyfi Python komutları içeren bir
~$exploit.py
dosyası bırakın.open
–stdin='~$exploit.py' -a Python
komutunu çalıştırın, bu da Python uygulamasını bıraktığımız dosya ile standart girişi olarak çalıştırır. Python kodumuzu mutlu bir şekilde çalıştırır ve launchd'nin bir alt süreci olduğu için Word'ün sandbox kurallarına bağlı değildir.
Last updated