macOS Office Sandbox Bypasses
Bypass Sandbox-a u Word-u putem Launch Agents
Aplikacija koristi prilagođeni Sandbox koristeći privilegiju com.apple.security.temporary-exception.sbpl
i ovaj prilagođeni sandbox omogućava pisanje fajlova bilo gde, sve dok ime fajla počinje sa ~$
: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
Stoga, izbegavanje je bilo jednostavno kao pisanje plist
LaunchAgent-a u ~/Library/LaunchAgents/~$escape.plist
.
Pogledajte originalni izveštaj ovde.
Bypass Sandbox-a u Word-u putem Login stavki i zip-a
Zapamtite da od prvog bekstva, Word može pisati proizvoljne fajlove čije ime počinje sa ~$
, iako nakon zakrpe prethodne ranjivosti nije bilo moguće pisati u /Library/Application Scripts
ili u /Library/LaunchAgents
.
Otkriveno je da je iz sandbox-a moguće kreirati Login stavku (aplikacije koje će se izvršiti kada se korisnik prijavi). Međutim, ove aplikacije neće se izvršiti osim ako nisu notarizovane i nije moguće dodati argumente (tako da ne možete pokrenuti reverznu ljusku koristeći bash
).
Od prethodnog bypass-a Sandbox-a, Microsoft je onemogućio opciju pisanja fajlova u ~/Library/LaunchAgents
. Međutim, otkriveno je da ako stavite zip fajl kao Login stavku, Archive Utility
će ga samo otpakovati na trenutnoj lokaciji. Dakle, pošto podrazumevano folder LaunchAgents
iz ~/Library
nije kreiran, bilo je moguće zapakovati plist u LaunchAgents/~$escape.plist
i postaviti zip fajl u ~/Library
tako da će prilikom dekompresije stići do odredišta trajnosti.
Pogledajte originalni izveštaj ovde.
Bypass Sandbox-a u Word-u putem Login stavki i .zshenv
(Zapamtite da od prvog bekstva, Word može pisati proizvoljne fajlove čije ime počinje sa ~$
).
Međutim, prethodna tehnika je imala ograničenje, ako folder ~/Library/LaunchAgents
postoji jer ga je neki drugi softver kreirao, ona bi propala. Zato je otkrivena druga Login stavka za ovo.
Napadač bi mogao kreirati fajlove .bash_profile
i .zshenv
sa payload-om za izvršavanje, a zatim ih zapakovati i zapisati zip u korisnički folder žrtve: ~/~$escape.zip
.
Zatim, dodajte zip fajl u Login stavke, a zatim i aplikaciju Terminal. Kada se korisnik ponovo prijavi, zip fajl će biti dekompresovan u korisnički fajl, prebrisavajući .bash_profile
i .zshenv
i stoga će terminal izvršiti jedan od ovih fajlova (zavisno od toga da li se koristi bash ili zsh).
Pogledajte originalni izveštaj ovde.
Bypass Sandbox-a u Word-u sa Open i env promenljivama
Iz sandbox procesa i dalje je moguće pozvati druge procese koristeći alatku open
. Osim toga, ovi procesi će se izvršavati unutar svog sopstvenog sandbox-a.
Otkriveno je da open alatka ima opciju --env
za pokretanje aplikacije sa specifičnim env promenljivama. Stoga je bilo moguće kreirati .zshenv
fajl unutar foldera unutar sandbox-a i koristiti open
sa --env
postavljajući HOME
promenljivu na taj folder otvarajući tu Terminal
aplikaciju, koja će izvršiti .zshenv
fajl (iz nekog razloga bilo je potrebno i postaviti promenljivu __OSINSTALL_ENVIROMENT
).
Pogledajte originalni izveštaj ovde.
Bypass Sandbox-a u Word-u sa Open i stdin
Alatka open
takođe podržava parametar --stdin
(a nakon prethodnog bypass-a više nije bilo moguće koristiti --env
).
Stvar je u tome da čak i ako je python
potpisan od strane Apple-a, neće izvršiti skriptu sa quarantine
atributom. Međutim, bilo je moguće proslediti mu skriptu putem stdin-a tako da neće proveravati da li je karantinirana ili ne:
Ubacite fajl
~$exploit.py
sa proizvoljnim Python komandama.Pokrenite open
–stdin='~$exploit.py' -a Python
, što pokreće Python aplikaciju sa našim ubačenim fajlom kao standardni ulaz. Python srećno izvršava naš kod i pošto je to podproces launchd-a, nije vezan za Word-ova pravila sandbox-a.
Last updated