iOS Universal Links

Reading time: 5 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Introduzione

I link universali offrono un esperienza di reindirizzamento senza soluzione di continuità agli utenti aprendo direttamente il contenuto nell'app, evitando la necessità di un reindirizzamento su Safari. Questi link sono unici e sicuri, poiché non possono essere rivendicati da altre app. Questo è garantito ospitando un file JSON apple-app-site-association nella directory radice del sito web, stabilendo un link verificabile tra il sito web e l'app. Nei casi in cui l'app non sia installata, Safari prenderà il controllo e dirigerà l'utente alla pagina web, mantenendo la presenza dell'app.

Per i tester di penetrazione, il file apple-app-site-association è di particolare interesse poiché potrebbe rivelare percorsi sensibili, potenzialmente inclusi quelli relativi a funzionalità non rilasciate.

Analisi del diritto ai domini associati

Gli sviluppatori abilitano i link universali configurando i Domini Associati nella scheda Capacità di Xcode o ispezionando il file .entitlements. Ogni dominio è preceduto da applinks:. Ad esempio, la configurazione di Telegram potrebbe apparire come segue:

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

Per ulteriori informazioni dettagliate, fare riferimento alla documentazione Apple Developer archiviata.

Se si lavora con un'applicazione compilata, le autorizzazioni possono essere estratte come descritto in questa guida.

Recupero del file Apple App Site Association

Il file apple-app-site-association deve essere recuperato dal server utilizzando i domini specificati nelle autorizzazioni. Assicurati che il file sia accessibile tramite HTTPS direttamente a https://<domain>/apple-app-site-association. Strumenti come il validatore Apple App Site Association (AASA) possono aiutare in questo processo.

L'app deve implementare metodi specifici per gestire correttamente i link universali. Il metodo principale da cercare è application:continueUserActivity:restorationHandler:. È fondamentale che lo schema degli URL gestiti sia HTTP o HTTPS, poiché altri non saranno supportati.

Validazione del metodo del gestore dei dati

Quando un link universale apre un'app, un oggetto NSUserActivity viene passato all'app con l'URL. Prima di elaborare questo URL, è essenziale convalidarlo e sanificarlo per prevenire rischi per la sicurezza. Ecco un esempio in Swift che dimostra il processo:

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
}

Gli URL devono essere analizzati e convalidati con attenzione, specialmente se includono parametri, per proteggere contro potenziali spoofing o dati malformati. L'API NSURLComponents è utile a questo scopo, come dimostrato di seguito:

swift
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
}
}

Attraverso una configurazione e una validazione diligenti, gli sviluppatori possono garantire che i link universali migliorino l'esperienza dell'utente mantenendo standard di sicurezza e privacy.

Strumenti

  • GetUniversal.link: Aiuta a semplificare il testing e la gestione dei link universali della tua app e del file AASA. Basta inserire il tuo dominio per verificare l'integrità del file AASA o utilizzare il dashboard personalizzato per testare facilmente il comportamento dei link. Questo strumento ti aiuta anche a determinare quando Apple indicizzerà nuovamente il tuo file AASA.

Riferimenti

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks