iOS Universal Links

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Introduzione

I collegamenti universali offrono un'esperienza di redirezione senza soluzione di continuità agli utenti aprendo direttamente i contenuti nell'app, evitando la necessità di una redirezione tramite Safari. Questi collegamenti sono unici e sicuri, in quanto non possono essere rivendicati da altre app. Ciò è garantito ospitando un file JSON apple-app-site-association nella directory radice del sito web, stabilendo un collegamento verificabile tra il sito web e l'app. Nei casi in cui l'app non sia installata, Safari prenderà il controllo e indirizzerà l'utente alla pagina web, mantenendo la presenza dell'app.

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

Analisi dell'Entitlement dei Domini Associati

Gli sviluppatori abilitano i collegamenti 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:

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

Per approfondimenti più completi, consulta la Documentazione degli sviluppatori Apple archiviata.

Se si lavora con un'applicazione compilata, i diritti possono essere estratti 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 nei diritti. Assicurarsi che il file sia accessibile tramite HTTPS direttamente su https://<dominio>/apple-app-site-association. Strumenti come il Validatore Apple App Site Association (AASA) possono aiutare in questo processo.

Gestione dei collegamenti universali nell'app

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

Convalida del metodo di gestione dei dati

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

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 attentamente analizzati e convalidati, specialmente se includono parametri, per proteggersi da possibili spoofing o dati malformati. L'API NSURLComponents è utile a questo scopo, come dimostrato di seguito:

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 convalida diligenti, gli sviluppatori possono garantire che i collegamenti universali migliorino l'esperienza dell'utente mantenendo gli standard di sicurezza e privacy.

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated