iOS UIActivity Sharing

Reading time: 4 minutes

tip

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

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

UIActivity Sharing Simplified

iOS 6 से, तृतीय-पक्ष अनुप्रयोगों को डेटा साझा करने की अनुमति दी गई है जैसे कि पाठ, URL, या चित्र, AirDrop जैसे तंत्रों का उपयोग करके, जैसा कि Apple के Inter-App Communication guide में वर्णित है। यह सुविधा एक प्रणाली-व्यापी share activity sheet के माध्यम से प्रकट होती है जो "Share" बटन के साथ बातचीत करने पर प्रकट होती है।

सभी अंतर्निहित साझा करने के विकल्पों की एक व्यापक सूची UIActivity.ActivityType पर उपलब्ध है। डेवलपर्स विशिष्ट साझा करने के विकल्पों को बाहर करने का विकल्प चुन सकते हैं यदि वे उन्हें अपने अनुप्रयोग के लिए अनुपयुक्त मानते हैं।

How to Share Data

ध्यान निम्नलिखित पर केंद्रित किया जाना चाहिए:

  • साझा किए जा रहे डेटा की प्रकृति।
  • कस्टम गतिविधियों का समावेश।
  • कुछ गतिविधि प्रकारों का बहिष्कार।

साझा करने की प्रक्रिया UIActivityViewController के निर्माण के माध्यम से की जाती है, जिसमें साझा करने के लिए इच्छित वस्तुओं को पास किया जाता है। यह निम्नलिखित द्वारा प्राप्त किया जाता है:

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

डेवलपर्स को UIActivityViewController की गतिविधियों और कस्टम गतिविधियों की जांच करनी चाहिए जिनके साथ इसे प्रारंभ किया गया है, साथ ही किसी भी निर्दिष्ट excludedActivityTypes की भी।

डेटा प्राप्त करने का तरीका

डेटा प्राप्त करते समय निम्नलिखित पहलू महत्वपूर्ण हैं:

  • कस्टम दस्तावेज़ प्रकारों की घोषणा।
  • दस्तावेज़ प्रकारों का निर्दिष्ट करना जिन्हें ऐप खोल सकता है।
  • प्राप्त डेटा की अखंडता की पुष्टि करना।

स्रोत कोड तक पहुंच के बिना, कोई Info.plist में UTExportedTypeDeclarations, UTImportedTypeDeclarations, और CFBundleDocumentTypes जैसे कुंजियों की जांच कर सकता है ताकि यह समझ सके कि एक ऐप किन दस्तावेज़ प्रकारों को संभाल और घोषित कर सकता है।

इन कुंजियों पर एक संक्षिप्त मार्गदर्शिका Stackoverflow पर उपलब्ध है, जो सिस्टम-व्यापी पहचान के लिए UTIs को परिभाषित और आयात करने के महत्व को उजागर करती है और "Open With" संवाद में एकीकृत करने के लिए आपके ऐप के साथ दस्तावेज़ प्रकारों को जोड़ती है।

डायनामिक परीक्षण दृष्टिकोण

गतिविधियों को भेजने का परीक्षण करने के लिए, कोई:

  • साझा की जा रही वस्तुओं और गतिविधियों को कैप्चर करने के लिए init(activityItems:applicationActivities:) विधि में हुक कर सकता है।
  • excludedActivityTypes प्रॉपर्टी को इंटरसेप्ट करके बाहर की गई गतिविधियों की पहचान कर सकता है।

वस्तुओं को प्राप्त करने के लिए, इसमें शामिल है:

  • ऐप के साथ किसी अन्य स्रोत (जैसे, AirDrop, ईमेल) से एक फ़ाइल साझा करना जो "Open with..." संवाद को प्रेरित करता है।
  • ऐप की प्रतिक्रिया को देखने के लिए स्थैतिक विश्लेषण के दौरान पहचानी गई अन्य विधियों के बीच application:openURL:options: में हुक करना।
  • ऐप की मजबूती का मूल्यांकन करने के लिए गलत फ़ाइलों या फज़िंग तकनीकों का उपयोग करना।

संदर्भ

tip

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

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