macOS Office Sandbox Bypasses
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Programu inatumia Sandbox maalum kwa kutumia haki com.apple.security.temporary-exception.sbpl
na sandbox hii maalum inaruhusu kuandika faili popote mradi jina la faili linapoanza na ~$
: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
Hivyo, kutoroka ilikuwa rahisi kama kuandika plist
LaunchAgent katika ~/Library/LaunchAgents/~$escape.plist
.
Check the original report here.
Kumbuka kwamba kutoka kutoroka kwa kwanza, Word inaweza kuandika faili zisizo na mpangilio ambazo jina lake linaanza na ~$
ingawa baada ya patch ya udhaifu wa awali haikuwezekana kuandika katika /Library/Application Scripts
au katika /Library/LaunchAgents
.
Iligundulika kwamba kutoka ndani ya sandbox inawezekana kuunda Kitu cha Kuingia (programu ambazo zitatekelezwa wakati mtumiaji anapoingia). Hata hivyo, programu hizi hazitaweza kutekelezwa isipokuwa hazijakuwa notarized na haiwezekani kuongeza args (hivyo huwezi tu kuendesha shell ya kinyume kwa kutumia bash
).
Kutoka kwa kutoroka kwa Sandbox ya awali, Microsoft ilizima chaguo la kuandika faili katika ~/Library/LaunchAgents
. Hata hivyo, iligundulika kwamba ikiwa utaweka faili ya zip kama Kitu cha Kuingia Archive Utility
itachambua tu zip katika eneo lake la sasa. Hivyo, kwa sababu kwa kawaida folda LaunchAgents
kutoka ~/Library
haijaundwa, ilikuwa inawezekana kuzipa plist katika LaunchAgents/~$escape.plist
na kuiweka faili ya zip katika ~/Library
ili wakati wa kufungua itafikia mahali pa kudumu.
Check the original report here.
(Kumbuka kwamba kutoka kutoroka kwa kwanza, Word inaweza kuandika faili zisizo na mpangilio ambazo jina lake linaanza na ~$
).
Hata hivyo, mbinu ya awali ilikuwa na kikomo, ikiwa folda ~/Library/LaunchAgents
ipo kwa sababu programu nyingine iliiunda, ingekuwa na shida. Hivyo, mnyororo tofauti wa Kitu cha Kuingia uligundulika kwa hili.
Mshambuliaji angeweza kuunda faili .bash_profile
na .zshenv
zikiwa na payload ya kutekeleza na kisha kuzipa na kuandika zip katika folda ya mtumiaji wa wahanga: ~/~$escape.zip
.
Kisha, ongeza faili ya zip kwenye Kitu cha Kuingia na kisha programu ya Terminal
. Wakati mtumiaji anapoingia tena, faili ya zip itafunguliwa katika faili za watumiaji, ikipunguza .bash_profile
na .zshenv
na hivyo, terminal itatekeleza moja ya faili hizi (kulingana na ikiwa bash au zsh inatumika).
Check the original report here.
Kutoka kwa michakato ya sandboxed bado inawezekana kuita michakato mingine kwa kutumia open
utility. Zaidi ya hayo, michakato hii itakimbia ndani ya sandbox yao wenyewe.
Iligundulika kwamba utility ya open ina chaguo la --env
kuendesha programu na mabadiliko maalum. Hivyo, ilikuwa inawezekana kuunda faili ya .zshenv
ndani ya folda ndani ya sandbox na kutumia open
na --env
kuweka HOME
variable kwa folda hiyo ikifungua programu hiyo ya Terminal
, ambayo itatekeleza faili ya .zshenv
(kwa sababu fulani ilikuwa pia inahitajika kuweka mabadiliko __OSINSTALL_ENVIROMENT
).
Check the original report here.
Utility ya open
pia ilisaidia param ya --stdin
(na baada ya kutoroka kwa awali haikuwezekana tena kutumia --env
).
Jambo ni kwamba hata kama python
ilitiwa saini na Apple, haitatekeleza script yenye sifa ya quarantine
. Hata hivyo, ilikuwa inawezekana kupitisha script kutoka stdin hivyo haitakagua ikiwa ilikuwa imewekwa karantini au la:
Angusha faili ~$exploit.py
yenye amri za Python zisizo na mpangilio.
Kimbia open –stdin='~$exploit.py' -a Python
, ambayo inakimbia programu ya Python na faili yetu iliyotupwa ikihudumu kama ingizo lake la kawaida. Python kwa furaha inakimbia msimbo wetu, na kwa kuwa ni mchakato wa mtoto wa launchd, haifungwi na sheria za sandbox za Word.