macOS Office Sandbox Bypasses

Support HackTricks

Word Sandbox bypass via Launch Agents

यह एप्लिकेशन com.apple.security.temporary-exception.sbpl अधिकार का उपयोग करके एक कस्टम सैंडबॉक्स का उपयोग करता है और यह कस्टम सैंडबॉक्स कहीं भी फ़ाइलें लिखने की अनुमति देता है जब तक फ़ाइल का नाम ~$ से शुरू होता है: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))

इसलिए, बचने के लिए ~/Library/LaunchAgents/~$escape.plist में एक plist LaunchAgent लिखना उतना ही आसान था।

यहां मूल रिपोर्ट देखें

Word Sandbox bypass via Login Items and zip

याद रखें कि पहले के बचाव से, Word मनमाने फ़ाइलें लिख सकता है जिनका नाम ~$ से शुरू होता है, हालांकि पिछले कमजोरियों के पैच के बाद /Library/Application Scripts या /Library/LaunchAgents में लिखना संभव नहीं था।

यह पता चला कि सैंडबॉक्स के भीतर एक Login Item (ऐप्स जो उपयोगकर्ता के लॉग इन करने पर निष्पादित होंगे) बनाना संभव है। हालाँकि, ये ऐप्स तब तक निष्पादित नहीं होंगे जब तक कि वे नोटराइज्ड न हों और आर्ग्स जोड़ना संभव नहीं है (इसलिए आप केवल bash का उपयोग करके एक रिवर्स शेल नहीं चला सकते)।

पिछले सैंडबॉक्स बायपास से, Microsoft ने ~/Library/LaunchAgents में फ़ाइलें लिखने का विकल्प अक्षम कर दिया। हालाँकि, यह पता चला कि यदि आप एक ज़िप फ़ाइल को Login Item के रूप में रखते हैं तो Archive Utility बस इसे उसके वर्तमान स्थान पर अनज़िप कर देगा। इसलिए, चूंकि डिफ़ॉल्ट रूप से ~/Library से LaunchAgents फ़ोल्डर नहीं बनाया गया है, इसलिए LaunchAgents/~$escape.plist में एक plist को ज़िप करना और ज़िप फ़ाइल को ~/Library में रखना संभव था ताकि जब इसे अनकंप्रेस किया जाए तो यह स्थायी गंतव्य तक पहुँच जाए।

यहां मूल रिपोर्ट देखें

Word Sandbox bypass via Login Items and .zshenv

(याद रखें कि पहले के बचाव से, Word मनमाने फ़ाइलें लिख सकता है जिनका नाम ~$ से शुरू होता है)।

हालाँकि, पिछले तकनीक में एक सीमा थी, यदि फ़ोल्डर ~/Library/LaunchAgents मौजूद है क्योंकि कुछ अन्य सॉफ़्टवेयर ने इसे बनाया है, तो यह विफल हो जाएगा। इसलिए इसके लिए एक अलग Login Items श्रृंखला का पता लगाया गया।

एक हमलावर फ़ाइलें .bash_profile और .zshenv बना सकता है जिसमें निष्पादित करने के लिए पेलोड हो और फिर उन्हें ज़िप कर सकता है और ज़िप को पीड़ित के उपयोगकर्ता फ़ोल्डर में लिख सकता है: ~/~$escape.zip

फिर, ज़िप फ़ाइल को Login Items में जोड़ें और फिर Terminal ऐप। जब उपयोगकर्ता फिर से लॉगिन करता है, तो ज़िप फ़ाइल उपयोगकर्ता फ़ाइल में अनकंप्रेस की जाएगी, .bash_profile और .zshenv को ओवरराइट करते हुए और इसलिए, टर्मिनल इनमें से एक फ़ाइल को निष्पादित करेगा (इस पर निर्भर करते हुए कि bash या zsh का उपयोग किया गया है)।

यहां मूल रिपोर्ट देखें

Word Sandbox Bypass with Open and env variables

सैंडबॉक्स किए गए प्रक्रियाओं से अन्य प्रक्रियाओं को open उपयोगिता का उपयोग करके बुलाना अभी भी संभव है। इसके अलावा, ये प्रक्रियाएँ अपने स्वयं के सैंडबॉक्स के भीतर चलेंगी।

यह पता चला कि ओपन उपयोगिता में --env विकल्प है जिससे एक ऐप को विशिष्ट env वेरिएबल्स के साथ चलाया जा सकता है। इसलिए, यह संभव था कि सैंडबॉक्स के भीतर एक फ़ोल्डर में .zshenv फ़ाइल बनाई जाए और open का उपयोग करके --env के साथ HOME वेरिएबल को उस फ़ोल्डर में सेट किया जाए, जिससे वह Terminal ऐप खोले, जो .zshenv फ़ाइल को निष्पादित करेगा (किसी कारण से __OSINSTALL_ENVIROMENT वेरिएबल सेट करना भी आवश्यक था)।

यहां मूल रिपोर्ट देखें

Word Sandbox Bypass with Open and stdin

open उपयोगिता ने --stdin पैरामीटर का भी समर्थन किया (और पिछले बायपास के बाद --env का उपयोग करना संभव नहीं था)।

बात यह है कि भले ही python Apple द्वारा साइन किया गया हो, यह quarantine विशेषता वाली स्क्रिप्ट को निष्पादित नहीं करेगा। हालाँकि, इसे stdin से एक स्क्रिप्ट पास करना संभव था ताकि यह न देखे कि यह क्वारंटाइन में था या नहीं:

  1. एक ~$exploit.py फ़ाइल छोड़ें जिसमें मनमाने Python कमांड हों।

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

Support HackTricks

Last updated