iOS Universal Links
Reading time: 4 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Introduction
Universal links hutoa uzoefu wa uelekezaji usio na mshono kwa watumiaji kwa kufungua moja kwa moja maudhui katika programu, bila ya kuhitaji uelekezaji wa Safari. Viungo hivi ni vya kipekee na salama, kwani haviwezi kudaiwa na programu nyingine. Hii inahakikishwa kwa kuhifadhi faili ya apple-app-site-association
ya JSON katika saraka ya mizizi ya tovuti, ikianzisha kiungo kinachoweza kuthibitishwa kati ya tovuti na programu. Katika hali ambapo programu haijasanidiwa, Safari itachukua jukumu na kumwelekeza mtumiaji kwenye ukurasa wa wavuti, ikihifadhi uwepo wa programu.
Kwa wapimaji wa udukuzi, faili ya apple-app-site-association
ni ya umuhimu maalum kwani inaweza kufichua njia nyeti, huenda ikijumuisha zile zinazohusiana na vipengele ambavyo havijachapishwa.
Kuchambua Haki za Domains Zinazohusishwa
Wakuu wa programu wanawezesha Universal Links kwa kuunda Domains Zinazohusishwa katika tab ya Uwezo ya Xcode au kwa kukagua faili ya .entitlements
. Kila domain inaanzishwa na applinks:
. Kwa mfano, usanidi wa Telegram unaweza kuonekana kama ifuatavyo:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
Kwa maelezo zaidi ya kina, rejelea archived Apple Developer Documentation.
Ikiwa unafanya kazi na programu iliyokusanywa, ruhusa zinaweza kutolewa kama ilivyoelezwa katika hiki kiongozi.
Kurejesha Faili la Apple App Site Association
Faili la apple-app-site-association
linapaswa kurejeshwa kutoka kwa seva kwa kutumia maeneo yaliyoainishwa katika ruhusa. Hakikisha faili inapatikana kupitia HTTPS moja kwa moja kwenye https://<domain>/apple-app-site-association
. Zana kama Apple App Site Association (AASA) Validator zinaweza kusaidia katika mchakato huu.
Kushughulikia Universal Links katika Programu
Programu lazima itekeleze mbinu maalum ili kushughulikia universal links kwa usahihi. Mbinu kuu ya kutafuta ni application:continueUserActivity:restorationHandler:
. Ni muhimu kwamba mpango wa URLs zinazoshughulikiwa ni HTTP au HTTPS, kwani zingine hazitasaidiwa.
Kuthibitisha Mbinu ya Kushughulikia Data
Wakati link ya universal inafungua programu, kitu cha NSUserActivity
kinapitishwa kwa programu na URL. Kabla ya kushughulikia URL hii, ni muhimu kuthibitisha na kusafisha ili kuzuia hatari za usalama. Hapa kuna mfano katika Swift unaoonyesha mchakato:
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 zinapaswa kuchambuliwa na kuthibitishwa kwa makini, hasa ikiwa zinajumuisha vigezo, ili kujilinda dhidi ya uwezekano wa udanganyifu au data isiyo sahihi. API ya NSURLComponents
ni muhimu kwa ajili hii, kama inavyoonyeshwa hapa chini:
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
}
}
Kupitia mipangilio na uthibitisho wa makini, waendelezaji wanaweza kuhakikisha kwamba viungo vya ulimwengu vinaboresha uzoefu wa mtumiaji huku wakihifadhi viwango vya usalama na faragha.
Zana
- GetUniversal.link: Inasaidia kurahisisha upimaji na usimamizi wa Viungo vya Ulimwengu wa programu yako na faili ya AASA. Ingiza tu kikoa chako ili kuthibitisha uhalali wa faili ya AASA au tumia dashibodi maalum ili kupima tabia ya kiungo kwa urahisi. Zana hii pia inakusaidia kubaini wakati Apple itakapofanya utafutaji wa faili yako ya AASA.
Marejeleo
- 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
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.