iOS Custom URI Handlers / Deeplinks / Custom Schemes

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Basic Information

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

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

Application Query Schemes Registration

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

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

Testing URL Handling and Validation

डेवलपर्स को URL पथ निर्माण और मान्यता को समझने के लिए स्रोत कोड में विशिष्ट विधियों का निरीक्षण करना चाहिए, जैसे application:didFinishLaunchingWithOptions: और application:openURL:options:। उदाहरण के लिए, Telegram 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: जैसे तरीके अन्य ऐप्स के साथ बातचीत करने के लिए URLs खोलने के लिए महत्वपूर्ण हैं। ऐप के स्रोत कोड में ऐसे तरीकों का उपयोग पहचानना बाहरी संचार को समझने के लिए कुंजी है।

अप्रचलित तरीकों का परीक्षण

URL खोलने से संबंधित अप्रचलित तरीके, जैसे application:handleOpenURL: और openURL:, की पहचान की जानी चाहिए और सुरक्षा निहितार्थों के लिए समीक्षा की जानी चाहिए।

URL स्कीमों का फज़िंग

URL स्कीमों का फज़िंग मेमोरी भ्रष्टाचार बग की पहचान कर सकता है। Frida जैसे उपकरण इस प्रक्रिया को स्वचालित कर सकते हैं, विभिन्न पेलोड के साथ URLs खोलकर क्रैश की निगरानी करने के लिए, जिसे iGoat-Swift ऐप में URLs के हेरफेर द्वारा उदाहरणित किया गया है:

$ 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

कस्टम यूआरएल स्कीम हाइजैकिंग

इस पोस्ट के अनुसार, दुर्भावनापूर्ण ऐप्स अन्य ऐप्स के कस्टम स्कीम्स को रजिस्टर कर सकते हैं, फिर दुर्भावनापूर्ण ऐप एक ब्राउज़र खोल सकता है जिसमें Safari ऐप के सभी कुकीज़ होते हैं ASWebAuthenticationSession के साथ।

ब्राउज़र के साथ, दुर्भावनापूर्ण ऐप एक हमलावर द्वारा नियंत्रित वेब पृष्ठ लोड कर सकता है और TCC मोबाइल उपयोगकर्ता से उस ऐप को खोलने की अनुमति मांगता है। फिर, दुर्भावनापूर्ण वेबपृष्ठ एक पीड़ित पृष्ठ पर रीडायरेक्ट कर सकता है, उदाहरण के लिए, prompt=none पैरामीटर के साथ एक OAuth प्रवाह। यदि उपयोगकर्ता पहले से ही OAuth प्रवाह में लॉग इन था, तो OAuth प्रवाह पीड़ित ऐप को कस्टम स्कीम का उपयोग करके गुप्त जानकारी वापस भेज देगा। हालांकि, क्योंकि दुर्भावनापूर्ण ऐप ने इसे भी रजिस्टर किया है और क्योंकि उपयोग किया गया ब्राउज़र दुर्भावनापूर्ण ऐप के अंदर है, इस मामले में कस्टम स्कीम को दुर्भावनापूर्ण ऐप द्वारा संभाला जाएगा जो OAuth टोकन चुराने में सक्षम होगा।

संदर्भ

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated