macOS Office Sandbox Bypasses
शब्द सैंडबॉक्स बायपास Launch Agents के माध्यम से
एप्लिकेशन कस्टम सैंडबॉक्स का उपयोग करता है जिसमें com.apple.security.temporary-exception.sbpl
इंटाइटलमेंट का उपयोग किया जाता है और यह कस्टम सैंडबॉक्स ~$
से शुरू होने वाले फ़ाइलों को लिखने की अनुमति देता है: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
इसलिए, बाहर निकलना plist
LaunchAgent में लिखना इतना आसान था: ~/Library/LaunchAgents/~$escape.plist
।
शब्द सैंडबॉक्स बायपास Login Items और zip के माध्यम से
पहले बायपास से याद रखें, Word किसी भी फ़ाइल को लिख सकता है जिसका नाम ~$
से शुरू होता है हालांकि पिछले vuln के पैच के बाद /Library/Application Scripts
या /Library/LaunchAgents
में लिखना संभव नहीं था।
साबित हुआ कि सैंडबॉक्स के अंदर से एक लॉगिन आइटम (एप्स जो उपयोगकर्ता लॉग इन करते समय चलाए जाएंगे) बनाना संभव है। हालांकि, ये एप्स केवल तभी चलेंगे जब वे नोटराइज़्ड होंगे और एर्ग्स जोड़ना संभव नहीं है (तो आप bash
का उपयोग करके बस एक रिवर्स शैल नहीं चला सकते हैं)।
पिछले सैंडबॉक्स बायपास से, Microsoft ने ~/Library/LaunchAgents
में फ़ाइलें लिखने का विकल्प अक्षम कर दिया था। हालांकि, पाया गया कि अगर आप एक zip फ़ाइल को लॉगिन आइटम के रूप में डालते हैं तो Archive Utility
उसे अपने वर्तमान स्थान पर अनज़िप कर देगा। इसलिए, क्योंकि डिफ़ॉल्ट रूप से ~/Library
के LaunchAgents
फ़ोल्डर नहीं बनाया गया है, इसे संधारित स्थान तक पहुंचाने के लिए LaunchAgents/~$escape.plist
में एक plist ज़िप किया जा सकता था और ~/Library
में ज़िप फ़ाइल रख दी जा सकती थी ताकि जब इसे डीकंप्रेस किया जाए, वह स्थायिति गंतव्य तक पहुंचेगा।
शब्द सैंडबॉक्स बायपास Login Items और .zshenv के माध्यम से
(पहले बायपास से याद रखें, Word किसी भी फ़ाइल को लिख सकता है जिसका नाम ~$
से शुरू होता है)।
हालांकि, पिछली तकनीक की एक सीमा थी, यदि फ़ोल्डर ~/Library/LaunchAgents
मौजूद है क्योंकि कुछ अन्य सॉफ़्टवेयर ने इसे बनाया है, तो यह विफल हो जाएगा। इसके लिए इसके लिए एक विभिन्न लॉगिन आइटम श्रृंखला इसके लिए खोजी गई थी।
एक हमलावर फ़ाइलें बना सकता था .bash_profile
और .zshenv
जिसमें पेलोड को निष्पादित करने के लिए और फिर उन्हें ज़िप करके और ज़िप फ़ाइल को पीड़ितों उपयोगकर्ता फ़ोल्डर में लिखने के लिए: ~/~$escape.zip
।
फिर, ज़िप फ़ाइल को लॉगिन आइटम में जोड़ें और फिर Terminal
एप्लिकेशन। जब उपयोगकर्ता फिर से लॉग इन करता है, तो ज़िप फ़ाइल उपयोगकर्ता फ़ाइल में अनकंप्रेस हो जाएगा, .bash_profile
और .zshenv
को अधिलेखित करके और इसलिए, टर्मिनल एक इनमें से एक फ़ाइल को निष्पादित करेगा (यह बाश या zsh का उपयोग करता है इस पर निर्भर करता है)।
Open और env variables के साथ शब्द सैंडबॉक्स बायपास
सैंडबॉक्स प्रक्रियाओं से अन्य प्रक्रियाओं को open
उपयोग करके आमंत्रित करना भी संभव है। इसके अतिरिक्त, ये प्रक्रियाएँ अपने खुद के सैंडबॉक्स के अंदर चलेंगी।
पाया गया कि open यूटिलिटी में --env
विकल्प है एक ऐप को निश्चित env वेरिएबल्स के साथ चलाने के लिए। इसलिए, सैंडबॉक्स के अंदर एक फ़ोल्डर के भीतर .zshenv
फ़ाइल बनाना संभव था और open
का उपयोग करना --env
के सेटिंग के साथ HOME
वेरिएबल को उस फ़ोल्डर में सेट करने के लिए करना था जिससे वह Terminal
एप्लिकेशन खोलेगा, जो .zshenv
फ़ाइल को निष्पादित करेगा (कुछ कारणों से इसे वर्चुअल __OSINSTALL_ENVIROMENT
भी सेट करने की आवश्यकता थी)।
Open और stdin के साथ शब्द सैंडबॉक्स बायपास
open
यूटिलिटी ने भी --stdin
पैरामीटर का समर्थन किया (और पिछले बायपास के बाद --env
का उपयोग संभव नहीं था)।
बात यह है कि यदि python
को Apple द्वारा साइन किया गया था, तो यह quarantine
गुणधर्म के साथ एक स्क्रिप्ट को नहीं निष्पादित करेगा। हालांकि, इसे stdin से एक स्क्रिप्ट पास करना संभव था ताकि यह यह जांच न करे कि यह क्वारंटाइन है या नहीं:
एक
~$exploit.py
फ़ाइल ड्रॉप करें जिसमें विचित Python कमांड हों।चलाएं open
–stdin='~$exploit.py' -a Python
, जो हमारी ड्रॉप की गई फ़ाइल के साथ पाइथन एप्लिकेशन को चलाता है जो इसके मानक इनपुट के रूप में काम करता है। पाइथन खुशी से हमारा कोड चलाता है,
Last updated