hacktricks/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md

8.7 KiB

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

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

यह एक सारांश है जो संबंधित जानकारी से है https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/

मूल जानकारी

कस्टम URL स्कीम्स ऐप्स को एक कस्टम प्रोटोकॉल का उपयोग करके संचार करने की संभावना प्रदान करते हैं, जैसा कि एप्पल डेवलपर डॉक्यूमेंटेशन में विस्तार से वर्णित है। इन स्कीम्स को ऐप द्वारा घोषित किया जाना चाहिए, जो फिर इन स्कीम्स का पालन करते हुए आने वाले URLs को संभालता है। इस वेक्टर के माध्यम से हमलों को रोकने के लिए सभी URL पैरामीटरों की पुष्टि करना और किसी भी गलतफहमी वाले URLs को छोड़ना महत्वपूर्ण है।

एक उदाहरण दिया गया है जहां URI myapp://hostname?data=123876123 एक विशिष्ट एप्लिकेशन क्रिया को आमंत्रित करता है। एक नोट किया गया वंर्नबिलिटी था Skype Mobile ऐप में, जिसने skype:// प्रोटोकॉल के माध्यम से अनधिकृत कॉल क्रियाएँ संभावित बनाई थी। पंजीकृत स्कीम्स ऐप के Info.plist में CFBundleURLTypes के तहत पाए जा सकते हैं। दुर्भाग्यपूर्ण ऐप्लिकेशन इसे उत्पीड़ित करके यह शोषण कर सकते हैं और संवेदनशील जानकारी को अवरोधित कर सकते हैं।

एप्लिकेशन क्वेरी स्कीम्स पंजीकरण

iOS 9.0 से, किसी ऐप की उपलब्धता की जांच करने के लिए, canOpenURL: में URL स्कीम्स की घोषणा करने की आवश्यकता होती है Info.plist के तहत LSApplicationQueriesSchemes के तहत। यह ऐप को 50 तक क्वेरी करने की सीमा लगाता है, जिससे ऐप की गणना को रोककर गोपनीयता को बढ़ाता है।

<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>

परीक्षण URL हैंडलिंग और मान्यता

डेवलपर्स को URL पथ निर्माण और मान्यता को समझने के लिए स्रोत कोड में विशिष्ट विधियों की जांच करनी चाहिए, जैसे application:didFinishLaunchingWithOptions: और application:openURL:options:। उदाहरण के लिए, टेलीग्राम विभिन्न विधियों का उपयोग URL खोलने के लिए करता है:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
self.openUrl(url: url)
return true
}

अन्य ऐप्स के लिए URL अनुरोधों का परीक्षण

openURL:options:completionHandler: जैसी विधियाँ अन्य ऐप्स के साथ संवाद करने के लिए URL खोलने के लिए महत्वपूर्ण हैं। ऐप के स्रोत कोड में इस प्रकार की विधियों की पहचान, बाह्य संचार को समझने के लिए महत्वपूर्ण है।

पुरानी विध

$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
Watching for crashes from iGoat...
No logs were moved.
Opened URL: iGoat://?contactNumber=0&message=0

संदर्भ

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

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