macOS Office Sandbox Bypasses

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Word Sandbox bypass via Launch Agents

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

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

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

Word Sandbox bypass via Login Items and zip

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

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

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

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

Word Sandbox bypass via Login Items and .zshenv

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

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

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

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

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

Word Sandbox Bypass with Open and env variables

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

यह पता चला कि 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 के सैंडबॉक्स नियमों से बंधा नहीं है।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें