macOS Office Sandbox Bypasses

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

शब्द सैंडबॉक्स बायपास 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 से एक स्क्रिप्ट पास करना संभव था ताकि यह यह जांच न करे कि यह क्वारंटाइन है या नहीं:

  1. एक ~$exploit.py फ़ाइल ड्रॉप करें जिसमें विचित Python कमांड हों।

  2. चलाएं open –stdin='~$exploit.py' -a Python, जो हमारी ड्रॉप की गई फ़ाइल के साथ पाइथन एप्लिकेशन को चलाता है जो इसके मानक इनपुट के रूप में काम करता है। पाइथन खुशी से हमारा कोड चलाता है,

Last updated