7.5 KiB
iOS Universal Links
Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.
Einführung
Universal Links bieten den Benutzern ein nahtloses Umleitungs-Erlebnis, indem sie Inhalte direkt in der App öffnen und die Notwendigkeit einer Safari-Umleitung umgehen. Diese Links sind eindeutig 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. Wenn die App nicht installiert ist, übernimmt Safari und leitet den Benutzer zur Webseite weiter, während die App präsent bleibt.
Für Penetrationstester ist die Datei apple-app-site-association
von besonderem Interesse, da sie möglicherweise sensible Pfade offenbart, die möglicherweise mit nicht veröffentlichten Funktionen zusammenhängen.
Analyse der Berechtigung für zugeordnete Domains
Entwickler aktivieren Universal Links, indem sie die zugeordneten Domains im Abschnitt "Capabilities" von Xcode konfigurieren oder die Datei .entitlements
überprüfen. Jede Domäne 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 gemäß dieser Anleitung 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 über HTTPS direkt unter https://<domain>/apple-app-site-association
erreichbar ist. Tools wie der Apple App Site Association (AASA) Validator können bei diesem Prozess helfen.
Behandlung von Universal Links in der App
Die App muss spezifische Methoden implementieren, um Universal Links korrekt zu behandeln. Die wichtigste Methode, auf die geachtet werden muss, ist application:continueUserActivity:restorationHandler:
. Es ist wichtig, dass das Schema der behandelten URLs HTTP oder HTTPS ist, da andere nicht unterstützt werden.
Validierung der Datenhandler-Methode
Wenn ein Universal Link eine App öffnet, wird der App ein NSUserActivity
-Objekt mit der URL ü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 veranschaulicht:
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 vor möglichen Spoofing-Angriffen oder fehlerhaften Daten zu schützen. Die NSURLComponents
API ist für diesen Zweck nützlich, wie im folgenden Beispiel 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 Universal Links die Benutzererfahrung verbessern und gleichzeitig Sicherheits- und Datenschutzstandards einhalten.
Referenzen
- 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
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.