iOS Universal Links
Reading time: 5 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Inleiding
Universal links bied 'n naatlose herleiding ervaring aan gebruikers deur inhoud direk in die app te open, wat die behoefte aan Safari-herleiding omseil. Hierdie skakels is uniek en veilig, aangesien dit nie deur ander apps geclaim kan word nie. Dit word verseker deur 'n apple-app-site-association
JSON-lĂȘer op die webwerf se wortelgids te huisves, wat 'n verifieerbare skakel tussen die webwerf en die app tot stand bring. In gevalle waar die app nie geĂŻnstalleer is nie, sal Safari oorneem en die gebruiker na die webblad lei, terwyl die app se teenwoordigheid gehandhaaf word.
Vir penetrasietoetsers is die apple-app-site-association
lĂȘer van besondere belang, aangesien dit sensitiewe paaie kan onthul, moontlik insluitend diĂ© wat verband hou met nie-vrygestelde funksies.
Ontleding van die Geassosieerde Domeine Regte
Ontwikkelaars stel Universal Links in werking deur die Geassosieerde Domeine in Xcode se Vermoëns-tabblad te konfigureer of deur die .entitlements
lĂȘer te ondersoek. Elke domein is voorafgegaan deur applinks:
. Byvoorbeeld, Telegram se konfigurasie mag soos volg verskyn:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
Vir meer omvattende insigte, verwys na die argief Apple Developer Documentation.
As jy met 'n saamgestelde toepassing werk, kan regte soos uiteengesit in hierdie gids onttrek word.
Herwinning van die Apple App Site Association LĂȘer
Die apple-app-site-association
lĂȘer moet van die bediener onttrek word met behulp van die domeine wat in die regte gespesifiseer is. Verseker dat die lĂȘer via HTTPS direk by https://<domain>/apple-app-site-association
toeganklik is. Gereedskap soos die Apple App Site Association (AASA) Validator kan in hierdie proses help.
Hantering van Universele Skakels in die App
Die app moet spesifieke metodes implementeer om universele skakels korrek te hanteer. Die primĂȘre metode om na te kyk is application:continueUserActivity:restorationHandler:
. Dit is van kardinale belang dat die skema van die URL's wat hanteer word HTTP of HTTPS is, aangesien ander nie ondersteun sal word nie.
Validasie van die Data Handler Metode
Wanneer 'n universele skakel 'n app oopmaak, word 'n NSUserActivity
objek aan die app oorgedra met die URL. Voor die verwerking van hierdie URL, is dit noodsaaklik om dit te valideer en te saniteer om sekuriteitsrisiko's te voorkom. Hier is 'n voorbeeld in Swift wat die proses demonstreer:
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 moet versigtig geparseer en gevalideer word, veral as hulle parameters insluit, om te beskerm teen potensiële spoofing of verkeerd gevormde data. Die NSURLComponents
API is nuttig vir hierdie doel, soos hieronder gedemonstreer:
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
}
}
Deur diligente konfigurasie en validasie kan ontwikkelaars verseker dat universele skakels die gebruikerservaring verbeter terwyl sekuriteit en privaatheidsstandaarde gehandhaaf word.
Gereedskap
- GetUniversal.link: Help om die toetsing en bestuur van jou app se Universele Skakels en AASA-lĂȘer te vereenvoudig. Voer eenvoudig jou domein in om die integriteit van die AASA-lĂȘer te verifieer of gebruik die pasgemaakte dashboard om skakelgedrag maklik te toets. Hierdie hulpmiddel help jou ook om te bepaal wanneer Apple jou AASA-lĂȘer volgende sal indekseer.
Verwysings
- 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
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.