hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md

16 KiB

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

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

UIActivity शेयरिंग

iOS 6 से शुरू होकर तीसरे-पक्ष के ऐप्स के लिए विशिष्ट तंत्रों के माध्यम से डेटा (आइटम्स) साझा करना संभव है उदाहरण के लिए AirDrop की तरह. उपयोगकर्ता के दृष्टिकोण से, यह सुविधा वह प्रसिद्ध सिस्टम-वाइड शेयर एक्टिविटी शीट है जो "शेयर" बटन पर क्लिक करने के बाद दिखाई देती है।

उपलब्ध निर्मित शेयरिंग तंत्रों की पूरी सूची UIActivity.ActivityType में पाई जा सकती है। यदि ऐप के लिए उपयुक्त नहीं माना जाता है, तो डेवलपर्स के पास कुछ शेयरिंग तंत्रों को बाहर करने की संभावना होती है

आइटम्स भेजना

UIActivity शेयरिंग का परीक्षण करते समय आपको विशेष ध्यान देना चाहिए:

  • शेयर किए जा रहे डेटा (आइटम्स) पर,
  • कस्टम एक्टिविटीज पर,
  • बाहर किए गए एक्टिविटी प्रकारों पर।

UIActivity के माध्यम से डेटा शेयरिंग का काम UIActivityViewController बनाकर और वांछित आइटम्स (URLs, टेक्स्ट, एक चित्र) को init(activityItems:applicationActivities:) में पास करके होता है।

यदि सोर्स कोड हो, तो आपको UIActivityViewController पर नजर डालनी चाहिए:

  • init(activityItems:applicationActivities:) मेथड को पास की गई एक्टिविटीज की जांच करें।
  • जांचें कि क्या यह कस्टम एक्टिविटीज को परिभाषित करता है (जो पिछले मेथड को भी पास किया जा रहा है)।
  • excludedActivityTypes की पुष्टि करें, यदि कोई हो।

यदि आपके पास केवल संकलित/स्थापित ऐप है, तो पिछले मेथड और प्रॉपर्टी की खोज करने का प्रयास करें, उदाहरण के लिए:

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

आइटम प्राप्त करना

आइटम प्राप्त करते समय, आपको जांचना चाहिए:

  • क्या ऐप घोषित करता है कस्टम डॉक्यूमेंट प्रकार** ** को Exported/Imported UTIs में देखकर ("Info" टैब Xcode प्रोजेक्ट में). सभी सिस्टम घोषित UTIs (Uniform Type Identifiers) की सूची archived Apple Developer Documentation में मिल सकती है।
  • क्या ऐप किसी डॉक्यूमेंट प्रकार को खोल सकता है यह निर्दिष्ट करता है Document Types में देखकर ("Info" टैब Xcode प्रोजेक्ट में). यदि मौजूद हैं, तो वे नाम और एक या अधिक UTIs के होते हैं जो डेटा प्रकार का प्रतिनिधित्व करते हैं (उदाहरण के लिए, "public.png" PNG फाइलों के लिए). iOS इसका उपयोग यह निर्धारित करने के लिए करता है कि क्या ऐप किसी दिए गए डॉक्यूमेंट को खोलने के लिए योग्य है (केवल Exported/Imported UTIs को निर्दिष्ट करना पर्याप्त नहीं है).
  • क्या ऐप सही ढंग से प्राप्त डेटा की जांच करता है ऐप डेलिगेट में application:openURL:options: (या इसके पुराने संस्करण UIApplicationDelegate application:openURL:sourceApplication:annotation:) के कार्यान्वयन को देखकर।

यदि स्रोत कोड नहीं है तो आप Info.plist फाइल में देख सकते हैं और खोज सकते हैं:

  • UTExportedTypeDeclarations/UTImportedTypeDeclarations यदि ऐप ने कस्टम डॉक्यूमेंट प्रकार का निर्यात/आयात घोषित किया है।
  • CFBundleDocumentTypes यह देखने के लिए कि क्या ऐप किसी डॉक्यूमेंट प्रकार को खोल सकता है

इन कुंजियों के उपयोग के बारे में एक बहुत ही पूर्ण विवरण Stackoverflow पर मिल सकता है लेकिन यहां आपके पास एक सारांश है:

  • UTExportedTypeDeclarations: इनका उपयोग आप अपने खुद के UTIs को परिभाषित करने के लिए करते हैं जिन्हें आपका ऐप सिस्टम को सिखाना चाहता है जिस पर यह स्थापित है। एक UTI एक डेटा का वर्णन करता है (जरूरी नहीं कि फाइल के अंदर स्थित डेटा!) और इसके लिए कम से कम एक पहचानकर्ता (com.example.MyCoolDataType) की आवश्यकता होती है। इसके अलावा इसमें एक नाम (My Cool Data Type), एक या अधिक फाइल नाम एक्सटेंशन (.myCoolDataType), एक या अधिक MIME प्रकार (x-application/my-cool-data-type), एक या अधिक पेस्टबोर्ड प्रकार (कॉपी&पेस्ट का उपयोग करते समय उस प्रकार के डेटा को स्थानांतरित करने के लिए उपयोग किया जाता है), और एक या अधिक पुराने OS प्रकार हो सकते हैं। आमतौर पर आप चाहते हैं कि UTIs मौजूदा UTIs के अनुरूप हों (उदाहरण के लिए, जब आप कहते हैं कि आपका UTI public.data के अनुरूप है, तो कोई भी प्रक्रिया जो सामान्य डेटा के साथ काम कर सकती है, वह आपके UTI के साथ भी काम कर सकती है).
  • उदा.: आप अपने स्वयं के प्रोप्राइटरी फाइल डेटा प्रारूप को परिभाषित करते हैं और आप चाहते हैं कि यह डेटा प्रारूप अन्य ऐप्स, प्लगइन्स, एक्सटेंशन्स आदि के लिए भी ज्ञात हो।
  • UTImportedTypeDeclarations: आप UTImportedTypeDeclarations का उपयोग करते हैं सिस्टम को UTIs के बारे में सिखाने के लिए जिन्हें आप सिस्टम में ज्ञात करना चाहते हैं लेकिन जो आपके UTIs नहीं हैं
  • उदा.: आपका ऐप किसी अन्य एप्लिकेशन के प्रोप्राइटरी डेटा प्रारूप को पढ़ सकता है, फिर भी आप नहीं जानते कि वह एप्लिकेशन सिस्टम पर स्थापित भी है या नहीं।
  • CFBundleDocumentTypes: आप CFBundleDocumentTypes का उपयोग करते हैं सिस्टम को बताने के लिए कि आपका ऐप किस डॉक्यूमेंट प्रकार को खोल सकता है। जब तक आप अपने UTIs को यहां भी सूचीबद्ध नहीं करते, ये UTIs आपके ऐप के साथ Finder में जुड़े नहीं होते हैं और आपका ऐप Open With > मेनू में नहीं दिखाई देगा।
    डॉक्यूमेंट प्रकार के लिए आपको हमेशा जो चीज सेट करनी चाहिए वह है भूमिका। भूमिका "Viewer" (आप उस फाइल प्रकार को दिखा सकते हैं लेकिन उसे संपादित नहीं कर सकते), "Editor" (आप उस फाइल प्रकार को दिखा और संपादित कर सकते हैं), "None" (यह निर्दिष्ट नहीं है कि आप उस फाइल के साथ क्या कर सकते हैं) हो सकती है।
  • उदा.: आप चाहते हैं कि आपका ऐप कुछ निश्चित फाइल प्रकारों के साथ जुड़ा हो, चाहे वह एक्सटेंशन द्वारा, MIME प्रकार द्वारा, या UTI पहचानकर्ता द्वारा पहचाना जाए। यदि आप चाहते हैं कि आपका ऐप किसी UTI प्रकार के साथ जुड़ा हो, तो ऐप को उस प्रकार को आयात या निर्यात करना चाहिए, अन्यथा प्रकार सिस्टम के लिए ज्ञात नहीं हो सकता है और अज्ञात UTI प्रकार के लिए पंजीकरण का कोई प्रभाव नहीं होता है।

डायनामिक परीक्षण

भेजने की गतिविधियों के लिए आप:

  • स्थिर विश्लेषण में देखे गए विधि को हुक करें (init(activityItems:applicationActivities:)) activityItems और applicationActivities प्राप्त करने के लिए।
  • हुक करके बाहर की गई गतिविधियों का पता लगाएं excludedActivityTypes property

आइटम प्राप्त करने के लिए आप:

  • किसी अन्य ऐप से फाइल को ऐप के साथ शेयर करें या इसे AirDrop या ई-मेल के माध्यम से भेजें। फाइल का चयन करें ताकि यह "Open with..." संवाद को ट्रिगर करे (यानी कोई डिफ़ॉल्ट ऐप नहीं है जो फाइल को खोलेगा, उदाहरण के लिए एक PDF)।
  • application:openURL:options: और किसी भी अन्य विधियों को हुक करें जो पिछले स्थिर विश्लेषण में पहचानी गई थीं।
  • ऐप व्यवहार का अवलोकन करें।
  • इसके अलावा, आप विशिष्ट दोषपूर्ण फाइलें भेज सकते हैं और/या एक fuzzing तकनीक का उपयोग कर सकते हैं।

पढ़ें कैसे यहां.

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

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

  • यदि आप चाहते हैं कि आपकी कंपनी का विज्ञापन HackTricks में दिखाई दे या HackTricks को PDF में डाउनलोड करें तो [**स