hacktricks/mobile-pentesting/ios-pentesting/ios-universal-links.md

11 KiB

iOS Universal Links

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

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

परिचय

यूनिवर्सल लिंक्स उपयोगकर्ताओं को सीधे ऐप में सामग्री खोलने के अनुभव की बिना रुकावट प्रदान करते हैं, सफारी रिडायरेक्शन की आवश्यकता को छोड़ देते हैं। ये लिंक्स अद्वितीय और सुरक्षित होते हैं, क्योंकि इन्हें अन्य ऐप्स द्वारा दावा नहीं किया जा सकता। इसे सुनिश्चित किया जाता है एक apple-app-site-association JSON फ़ाइल को वेबसाइट के मूल निर्देशिका पर होस्ट करके, वेबसाइट और ऐप के बीच एक सत्यापनीय लिंक स्थापित करके। ऐसे मामलों में जहां ऐप स्थापित नहीं है, सफारी उपयोगकर्ता को वेबपेज पर निर्देशित करेगा, ऐप की मौजूदगी बनाए रखते हुए।

पेनेट्रेशन टेस्टर्स के लिए, apple-app-site-association फ़ाइल विशेष रूप से महत्वपूर्ण है क्योंकि यह संवेदनशील पथों का पता लगा सकता है, जिसमें अप्रकाशित सुविधाओं से संबंधित हो सकते हैं।

संबंधित डोमेन्स अनुमतियों का विश्लेषण

डेवलपर्स यून

<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>

अधिक व्यापक अनुभव के लिए, आर्काइव एप्पल डेवलपर डॉक्यूमेंटेशन का संदर्भ दें।

यदि कंपाइल किया गया एप्लिकेशन के साथ काम किया जा रहा है, तो entitlements को इस गाइड में बताए तरीके से निकाला जा सकता है।

एप्पल एप साइट एसोसिएशन फ़ाइल प्राप्त करना

apple-app-site-association फ़ाइल को एंटाइटलमेंट्स में निर्दिष्ट डोमेन का उपयोग करके सर्वर से प्राप्त किया जाना चाहिए। सुनिश्चित करें कि फ़ाइल को सीधे HTTPS के माध्यम से https://<domain>/apple-app-site-association पर पहुंचा जा सकता है। एप्पल एप साइट एसोसिएशन (AASA) वैलिडेटर जैसे उपकरण इस प्रक्रिया में सहायक हो सकते हैं।

एप्लिकेशन में यूनिवर्सल लिंक्स का हैंडलिंग

एप्लिकेशन को यूनिवर्सल लिंक्स को सही ढंग से हैंडल करने के लिए विशेष विधियों को लागू करना चाहिए। प्राथमिक विधि जिसे खोजना चाहिए, application:continueUserActivity:restorationHandler: है। URL की scheme का HTTP या HTTPS होना महत्वपूर्ण है, क्योंकि अन्य को समर्थन नहीं किया जाएगा।

डेटा हैंडलर विधि का सत्यापन

जब एक यूनिवर्सल लिंक एप्लिकेशन को खोलता है, तो एप्लिकेशन को URL के साथ एक NSUserActivity ऑब्ज

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Check for web browsing activity and valid URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}

return true
}

URLs को सावधानी से पार्स किया और मान्यता प्राप्त किया जाना चाहिए, खासकर अगर उनमें पैरामीटर शामिल हैं, ताकि किसी भी संभावित spoofing या गलत डेटा के खिलाफ सुरक्षित रहा जा सके। NSURLComponents API इस उद्देश्य के लिए उपयोगी है, जैसा नीचे प्रदर्शित किया गया है:

func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
return false
}

if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Process the URL with album name and photo index

return true

} else {
// Handle invalid or missing parameters

return false
}
}

ध्यानपूर्वक विन्यास और मान्यता से, डेवलपर सुनिश्चित कर सकते हैं कि यूनिवर्सल लिंक्स उपयोगकर्ता अनुभव को बढ़ावा देते हैं जबकि सुरक्षा और गोपनीयता मानकों को बनाए रखते हैं।

संदर्भ

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

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