hacktricks/mobile-pentesting/ios-pentesting/ios-universal-links.md

7.7 KiB

iOS Universal Links

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Einführung

Universelle Links bieten eine nahtlose Weiterleitung für Benutzer, indem sie Inhalte direkt in der App öffnen und die Notwendigkeit einer Weiterleitung über Safari umgehen. Diese Links sind einzigartig und sicher, da sie nicht von anderen Apps beansprucht werden können. Dies wird durch das Hosting einer apple-app-site-association JSON-Datei im Stammverzeichnis der Website sichergestellt, wodurch eine überprüfbare Verbindung zwischen der Website und der App hergestellt wird. In Fällen, in denen die App nicht installiert ist, übernimmt Safari und leitet den Benutzer zur Webseite weiter, wodurch die Präsenz der App erhalten bleibt.

Für Penetrationstester ist die apple-app-site-association-Datei von besonderem Interesse, da sie sensible Pfade offenbaren kann, die möglicherweise mit nicht veröffentlichten Funktionen in Zusammenhang stehen.

Analyse der Associated Domains Berechtigung

Entwickler aktivieren universelle Links, indem sie die Associated Domains im Tab "Capabilities" von Xcode konfigurieren oder die .entitlements-Datei überprüfen. Jede Domain wird mit applinks: vorangestellt. Zum Beispiel könnte die Konfiguration von Telegram wie folgt aussehen:

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

Für umfassendere Einblicke, siehe die archivierte Apple Developer Dokumentation.

Wenn Sie mit einer kompilierten Anwendung arbeiten, können Berechtigungen wie in diesem Leitfaden beschrieben extrahiert werden.

Abrufen der Apple App Site Association Datei

Die apple-app-site-association Datei sollte vom Server unter Verwendung der in den Berechtigungen angegebenen Domains abgerufen werden. Stellen Sie sicher, dass die Datei direkt über HTTPS unter https://<domain>/apple-app-site-association zugänglich ist. Tools wie der Apple App Site Association (AASA) Validator können bei diesem Prozess helfen.

Die App muss spezifische Methoden implementieren, um Universal Links korrekt zu verarbeiten. Die primäre Methode, nach der Sie suchen sollten, ist application:continueUserActivity:restorationHandler:. Es ist entscheidend, dass das Schema der verarbeiteten URLs HTTP oder HTTPS ist, da andere nicht unterstützt werden.

Validierung der Datenhandler-Methode

Wenn ein Universal Link eine App öffnet, wird ein NSUserActivity Objekt mit der URL an die App übergeben. Bevor diese URL verarbeitet wird, ist es wichtig, sie zu validieren und zu bereinigen, um Sicherheitsrisiken zu vermeiden. Hier ist ein Beispiel in Swift, das den Prozess demonstriert:

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 sollten sorgfältig analysiert und validiert werden, insbesondere wenn sie Parameter enthalten, um sich gegen potenzielles Spoofing oder fehlerhafte Daten abzusichern. Die NSURLComponents API ist dafür nützlich, wie unten gezeigt:

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

Durch sorgfältige Konfiguration und Validierung können Entwickler sicherstellen, dass universelle Links das Benutzererlebnis verbessern und gleichzeitig Sicherheits- und Datenschutzstandards einhalten.

Tools

  • GetUniversal.link: Hilft dabei, das Testen und Verwalten der universellen Links und der AASA-Datei Ihrer App zu vereinfachen. Geben Sie einfach Ihre Domain ein, um die Integrität der AASA-Datei zu überprüfen, oder verwenden Sie das benutzerdefinierte Dashboard, um das Linkverhalten einfach zu testen. Dieses Tool hilft Ihnen auch zu bestimmen, wann Apple Ihre AASA-Datei das nächste Mal indizieren wird.

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}