Translated ['src/mobile-pentesting/ios-pentesting/ios-universal-links.md

This commit is contained in:
Translator 2025-07-17 14:10:05 +00:00
parent 4f995ad144
commit 7b50b1ef9c

View File

@ -6,7 +6,7 @@
Universal 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 sichergestellt, indem eine `apple-app-site-association` JSON-Datei im Stammverzeichnis der Website gehostet wird, die eine überprüfbare Verbindung zwischen der Website und der App herstellt. 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.
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 Verbindung stehen.
### **Analyse der Associated Domains Berechtigung**
@ -20,11 +20,23 @@ Entwickler aktivieren Universal Links, indem sie die **Associated Domains** im T
```
Für umfassendere Einblicke, siehe die [archivierte Apple Developer Dokumentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Wenn mit einer kompilierten Anwendung gearbeitet wird, können Berechtigungen wie in [diesem Leitfaden](extracting-entitlements-from-compiled-application.md) beschrieben extrahiert werden.
Wenn Sie mit einer kompilierten Anwendung arbeiten, können Berechtigungen wie in [diesem Leitfaden](extracting-entitlements-from-compiled-application.md) 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](https://branch.io/resources/aasa-validator/) können bei diesem Prozess helfen.
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` (oder `/.well-known/apple-app-site-association`) zugänglich ist. Tools wie der [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) können bei diesem Prozess helfen.
> **Schnelle Aufzählung von einer macOS/Linux-Shell**
>
> ```bash
> # vorausgesetzt, Sie haben die Berechtigungen in ent.xml extrahiert
> doms=$(plutil -extract com.apple.developer.associated-domains xml1 -o - ent.xml | \
> grep -oE 'applinks:[^<]+' | cut -d':' -f2)
> for d in $doms; do
> echo "[+] Abrufen von AASA für $d";
> curl -sk "https://$d/.well-known/apple-app-site-association" | jq '.'
> done
> ```
### **Verarbeiten von Universal Links in der App**
@ -72,13 +84,34 @@ return false
```
Durch **sorgfältige Konfiguration und Validierung** können Entwickler sicherstellen, dass universelle Links die Benutzererfahrung verbessern und gleichzeitig Sicherheits- und Datenschutzstandards einhalten.
## Tools
## Häufige Schwachstellen & Pentesting-Überprüfungen
- [GetUniversal.link](https://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.
| # | Schwäche | Wie zu testen | Ausnutzung / Auswirkungen |
|---|----------|---------------|--------------------------|
| 1 | **Zu breite `paths` / `components`** in der AASA-Datei (z.B. `"/": "*"` oder Wildcards wie `"/a/*"`). | • Überprüfen Sie die heruntergeladene AASA und suchen Sie nach `*`, nachgestellten Schrägstrichen oder `{"?": …}`-Regeln.<br>• Versuchen Sie, unbekannte Ressourcen anzufordern, die weiterhin der Regel entsprechen (`https://domain.com/a/evil?_p_dp=1`). | Universelles Link-Hijacking: Eine bösartige iOS-App, die dieselbe Domain registriert, könnte all diese Links beanspruchen und eine Phishing-Benutzeroberfläche präsentieren. Ein Beispiel aus der Praxis ist der Bug-Bounty-Bericht von Temu.com im Mai 2025, bei dem ein Angreifer jeden `/a/*`-Pfad auf seine eigene App umleiten konnte. |
| 2 | **Fehlende serverseitige Validierung** von Deep-Link-Pfaden. | Nachdem die erlaubten Pfade identifiziert wurden, senden Sie `curl`/Burp-Anfragen an nicht existierende Ressourcen und beobachten Sie die HTTP-Statuscodes. Alles andere als `404` (z.B. 200/302) ist verdächtig. | Ein Angreifer kann beliebige Inhalte hinter einem erlaubten Pfad hosten und über die legitime Domain bereitstellen, was die Erfolgsquote von Phishing oder Diebstahl von Sitzungstoken erhöht. |
| 3 | **App-seitige URL-Verarbeitung ohne Whitelisting von Scheme/Host** (CVE-2024-10474 Mozilla Focus < 132). | Suchen Sie nach direkten `openURL:`/`open(_:options:)`-Aufrufen oder JavaScript-Brücken, die beliebige URLs weiterleiten. | Interne Seiten können `myapp://` oder `https://`-URLs schmuggeln, die die Sicherheitsüberprüfungen der URL-Leiste des Browsers umgehen, was zu Spoofing oder unbeabsichtigten privilegierten Aktionen führen kann. |
| 4 | **Verwendung von Wildcard-Subdomains** (`*.example.com`) in der Berechtigung. | `grep` nach `*.` in den Berechtigungen. | Wenn eine Subdomain übernommen wird (z.B. über einen ungenutzten S3-Bucket), erhält der Angreifer automatisch die Bindung des universellen Links. |
## References
### Schnelle Checkliste
* [ ] Berechtigungen extrahieren und jeden `applinks:`-Eintrag auflisten.
* [ ] AASA für jeden Eintrag herunterladen und auf Wildcards überprüfen.
* [ ] Überprüfen, ob der Webserver für undefinierte Pfade **404** zurückgibt.
* [ ] Im Binärformat bestätigen, dass **nur** vertrauenswürdige Hosts/Schemes verarbeitet werden.
* [ ] Wenn die App die neuere `components`-Syntax (iOS 11+) verwendet, Fuzzing der Abfrageparameterregeln (`{"?":{…}}`).
## Werkzeuge
- [GetUniversal.link](https://getuniversal.link/): Hilft, 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.
- [Knil](https://github.com/ethanhuang13/knil): Open-Source-iOS-Dienstprogramm, das jede von einer Domain deklarierte universelle Link direkt auf dem Gerät abruft, analysiert und Ihnen ermöglicht, **Tap-Tests** durchzuführen.
- [universal-link-validator](https://github.com/urbangems/universal-link-validator): CLI / Web-Validator, der strenge AASA-Konformitätsprüfungen durchführt und gefährliche Wildcards hervorhebt.
## Referenzen
- [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](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://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://medium.com/@m.habibgpi/universal-link-hijacking-via-misconfigured-aasa-file-on-temu-com-eadfcb745e4e)
- [https://nvd.nist.gov/vuln/detail/CVE-2024-10474](https://nvd.nist.gov/vuln/detail/CVE-2024-10474)
{{#include ../../banners/hacktricks-training.md}}