iOS Universal Links
Reading time: 5 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Introduction
यूनिवर्सल लिंक उपयोगकर्ताओं को सहज रीडायरेक्शन अनुभव प्रदान करते हैं, जो सीधे ऐप में सामग्री खोलते हैं, सफारी रीडायरेक्शन की आवश्यकता को बायपास करते हैं। ये लिंक विशिष्ट और सुरक्षित होते हैं, क्योंकि इन्हें अन्य ऐप्स द्वारा दावा नहीं किया जा सकता। यह सुनिश्चित करने के लिए, वेबसाइट की रूट डायरेक्टरी में apple-app-site-association
JSON फ़ाइल होस्ट की जाती है, जो वेबसाइट और ऐप के बीच एक सत्यापित लिंक स्थापित करती है। यदि ऐप स्थापित नहीं है, तो सफारी उपयोगकर्ता को वेबपेज पर निर्देशित करेगी, ऐप की उपस्थिति बनाए रखते हुए।
पेनट्रेशन टेस्टर्स के लिए, apple-app-site-association
फ़ाइल विशेष रुचि की होती है क्योंकि यह संवेदनशील पथों को प्रकट कर सकती है, संभावित रूप से उन पथों को शामिल करते हुए जो अप्रकाशित सुविधाओं से संबंधित हैं।
Analyzing the Associated Domains Entitlement
डेवलपर्स यूनिवर्सल लिंक को सक्षम करते हैं Associated Domains को Xcode के Capabilities टैब में कॉन्फ़िगर करके या .entitlements
फ़ाइल का निरीक्षण करके। प्रत्येक डोमेन applinks:
के साथ प्रारंभ होता है। उदाहरण के लिए, टेलीग्राम की कॉन्फ़िगरेशन इस प्रकार दिखाई दे सकती है:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
अधिक व्यापक अंतर्दृष्टि के लिए, संरक्षित Apple Developer Documentation को देखें।
यदि संकलित एप्लिकेशन के साथ काम कर रहे हैं, तो इस गाइड में वर्णित अनुसार अधिकार निकाले जा सकते हैं।
Apple App Site Association फ़ाइल प्राप्त करना
apple-app-site-association
फ़ाइल को अधिकारों में निर्दिष्ट डोमेन का उपयोग करके सर्वर से प्राप्त किया जाना चाहिए। सुनिश्चित करें कि फ़ाइल https://<domain>/apple-app-site-association
पर सीधे HTTPS के माध्यम से सुलभ है। Apple App Site Association (AASA) Validator जैसे उपकरण इस प्रक्रिया में मदद कर सकते हैं।
ऐप में यूनिवर्सल लिंक को संभालना
ऐप को यूनिवर्सल लिंक को सही ढंग से संभालने के लिए विशिष्ट विधियों को लागू करना चाहिए। देखने के लिए प्राथमिक विधि application:continueUserActivity:restorationHandler:
है। यह महत्वपूर्ण है कि संभाले गए URLs का स्कीम HTTP या HTTPS हो, क्योंकि अन्य समर्थित नहीं होंगे।
डेटा हैंडलर विधि का मान्यकरण
जब एक यूनिवर्सल लिंक एक ऐप खोलता है, तो एक NSUserActivity
ऑब्जेक्ट ऐप को URL के साथ पास किया जाता है। इस URL को संसाधित करने से पहले, इसे मान्य और स्वच्छ करना आवश्यक है ताकि सुरक्षा जोखिमों से बचा जा सके। यहाँ Swift में प्रक्रिया का एक उदाहरण है:
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 को सावधानी से पार्स और मान्य किया जाना चाहिए, विशेष रूप से यदि वे पैरामीटर शामिल करते हैं, संभावित स्पूफिंग या गलत डेटा के खिलाफ सुरक्षा के लिए। 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
}
}
परिश्रमी कॉन्फ़िगरेशन और मान्यता के माध्यम से, डेवलपर्स यह सुनिश्चित कर सकते हैं कि यूनिवर्सल लिंक उपयोगकर्ता अनुभव को बढ़ाते हैं जबकि सुरक्षा और गोपनीयता मानकों को बनाए रखते हैं।
उपकरण
- GetUniversal.link: आपके ऐप के यूनिवर्सल लिंक और AASA फ़ाइल के परीक्षण और प्रबंधन को सरल बनाने में मदद करता है। AASA फ़ाइल की अखंडता को सत्यापित करने के लिए बस अपने डोमेन को दर्ज करें या लिंक व्यवहार का आसानी से परीक्षण करने के लिए कस्टम डैशबोर्ड का उपयोग करें। यह उपकरण यह भी मदद करता है कि Apple आपकी AASA फ़ाइल को अगली बार कब अनुक्रमित करेगा।
संदर्भ
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis
- https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।