iOS Universal Links
Reading time: 7 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
Introduction
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.
Analyzing the Associated Domains Entitlement
Ontwikkelaars stel Universal Links in deur die Associated Domains in Xcode se Capabilities-oortjie 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 gecompileerde 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
(of /.well-known/apple-app-site-association
) toeganklik is. Gereedskap soos die Apple App Site Association (AASA) Validator kan in hierdie proses help.
Vinige enumerasie vanaf 'n macOS/Linux shell
# aanneem dat jy die regte na ent.xml onttrek het doms=$(plutil -extract com.apple.developer.associated-domains xml1 -o - ent.xml | \ grep -oE 'applinks:[^<]+' | cut -d':' -f2) for d in $doms; do echo "[+] Fetching AASA for $d"; curl -sk "https://$d/.well-known/apple-app-site-association" | jq '.' done
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 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 teen moontlike spoofing of verkeerd gevormde data te beskerm. 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 nette konfigurasie en validasie kan ontwikkelaars verseker dat universele skakels die gebruikerservaring verbeter terwyl sekuriteit en privaatheidsstandaarde gehandhaaf word.
Algemene Kw vulnerabilities & Pentesting Kontroles
# | Swakheid | Hoe om te toets | Exploitatie / Impak |
---|---|---|---|
1 | Oor-brede paths / components in die AASA-lĂȘer (bv. "/": "*" of wildcard soos "/a/*" ). | âą Ondersoek die afgelaaide AASA en soek na * , agterste schuine streep, of {"?": âŠ} reĂ«ls.âą Probeer om onbekende hulpbronne aan te vra wat steeds by die reĂ«l pas ( https://domain.com/a/evil?_p_dp=1 ). | Universele-skakel-hijacking: 'n kwaadwillige iOS-app wat dieselfde domein registreer, kan al daardie skakels opeis en phishing UI aanbied. 'n Werklike voorbeeld is die Mei 2025 Temu.com fout-bounty verslag waar 'n aanvaller enige /a/* pad na hul eie app kon herlei. |
2 | Ontbrekende bediener-kant validasie van diep-skakel pades. | Nadat die toegelate pades geĂŻdentifiseer is, stuur curl /Burp versoeke na nie-bestaande hulpbronne en observeer HTTP-statuskodes. Enige iets anders as 404 (bv. 200/302) is verdag. | 'n Aanvaller kan arbitrĂȘre inhoud agter 'n toegelate pad huisves en dit via die wettige domein bedien, wat die sukseskoers van phishing of sessie-token-diefstal verhoog. |
3 | App-kant URL hantering sonder skema/gasheer witlys (CVE-2024-10474 â Mozilla Focus < 132). | Soek na direkte openURL: /open(_:options:) oproepe of JavaScript-brugte wat arbitrĂȘre URL's deurgee. | Interne bladsye kan myapp:// of https:// URL's smokkel wat die browser se URL-balk veiligheidstoetse omseil, wat lei tot spoofing of onbedoelde bevoorregte aksies. |
4 | Gebruik van wildcard sub-domeine (*.example.com ) in die regte. | grep vir *. in die regte. | As enige sub-domein oorgeneem word (bv. via 'n ongebruikte S3-bucket), verkry die aanvaller outomaties die Universele Skakel binding. |
Vinige Kontrollys
-
Trek regte uit en tel elke
applinks:
inskrywing op. - Laai AASA af vir elke inskrywing en oudit vir wildcards.
- Verifieer dat die webbediener 404 teruggee vir ongedefinieerde pades.
- Bevestig in die binĂȘre dat slegs vertroude gashere/skemas hanteer word.
-
As die app die nuwer
components
sintaksis gebruik (iOS 11+), fuzz query-parameter reĂ«ls ({"?":{âŠ}}
).
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 AASA-lĂȘer integriteit te verifieer of gebruik die pasgemaakte dashboard om maklik skakelgedrag te toets. Hierdie hulpmiddel help jou ook om te bepaal wanneer Apple jou AASA-lĂȘer volgende sal indekseer.
- Knil: Open-source iOS nut wat elke Universele Skakel wat deur 'n domein verklaar is, direk op die toestel haal, ontleed en laat jou tap-toets.
- universal-link-validator: CLI / web validator wat streng AASA konformiteitskontroles uitvoer en gevaarlike wildcards uitlig.
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
- https://medium.com/@m.habibgpi/universal-link-hijacking-via-misconfigured-aasa-file-on-temu-com-eadfcb745e4e
- https://nvd.nist.gov/vuln/detail/CVE-2024-10474
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.