hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

11 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
  • क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित करना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करना चाहिए? SUBSCRIPTION PLANS की जांच करें!

  • खोजें The PEASS Family, हमारा विशेष संग्रह NFTs

  • प्राप्त करें official PEASS & HackTricks swag

  • शामिल हों 💬 Discord समूह या telegram समूह या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.

  • अपने हैकिंग ट्रिक्स को hacktricks repo और hacktricks-cloud repo में PR जमा करके साझा करें।

UIActivity Sharing

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

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

आइटम भेजना

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

  • साझा किए जा रहे डेटा (आइटम),
  • कस्टम गतिविधियाँ,
  • छोड़ी गई गतिविधि प्रकार।

UIActivity के माध्यम से डेटा साझा करने के लिए UIActivityViewController बनाकर और इसे init(activityItems:applicationActivities:) पर चाहिए आइटम (URL, पाठ, एक चित्र) को पास करके काम करता है।

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

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

यदि आपके पास केवल कंपाइल किया गया/स्थापित ऐप है, तो पिछली विधि और संपत्ति के लिए खोज करें, उदाहरण के लिए:

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

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

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

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

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

  • UTExportedTypeDeclarations/UTImportedTypeDeclarations यदि ऐप घोषित/आयातित कस्टम दस्तावेज़ प्रकार की घोषणा करता है।
  • CFBundleDocumentTypes देखें कि ऐप किसी दस्तावेज़ प्रकार को खोलने के योग्य निर्दिष्ट करता है या नहीं।

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

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