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

This commit is contained in:
Translator 2025-07-17 14:10:15 +00:00
parent 341ff767f0
commit 4cc992c64c

View File

@ -2,15 +2,15 @@
{{#include ../../banners/hacktricks-training.md}}
## Inleiding
## Introduction
Universal links bied 'n **naatlose herleiding** ervaring aan gebruikers deur inhoud direk in die app te open, wat die behoefte aan Safari-herleiding omseil. Hierdie skakels is **uniek** en veilig, aangesien dit nie deur ander apps geclaim kan word nie. Dit word verseker deur 'n `apple-app-site-association` JSON-lêer op die webwerf se wortelgids te huisves, wat 'n verifieerbare skakel tussen die webwerf en die app tot stand bring. In gevalle waar die app nie geïnstalleer is nie, sal Safari oorneem en die gebruiker na die webblad lei, terwyl die app se teenwoordigheid gehandhaaf word.
Vir penetrasietoetsers is die `apple-app-site-association` lêer van besondere belang, aangesien dit **sensitiewe paaie** kan onthul, moontlik insluitend dié wat verband hou met nie-vrygestelde funksies.
### **Ontleding van die Geassosieerde Domeine Regte**
### **Analyzing the Associated Domains Entitlement**
Ontwikkelaars stel Universal Links in werking deur die **Geassosieerde Domeine** in Xcode se Vermoëns-tabblad te konfigureer of deur die `.entitlements` lêer te ondersoek. Elke domein is voorafgegaan deur `applinks:`. Byvoorbeeld, Telegram se konfigurasie mag soos volg verskyn:
Ontwikkelaars aktiveer Universal Links deur die **Associated Domains** in Xcode se Capabilities-oortjie te konfigureer of deur die `.entitlements` lêer te ondersoek. Elke domein is voorafgegaan deur `applinks:`. Byvoorbeeld, Telegram se konfigurasie mag soos volg verskyn:
```xml
<key>com.apple.developer.associated-domains</key>
<array>
@ -20,15 +20,27 @@ Ontwikkelaars stel Universal Links in werking deur die **Geassosieerde Domeine**
```
Vir meer omvattende insigte, verwys na die [argief Apple Developer Documentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
As jy met 'n saamgestelde toepassing werk, kan regte soos uiteengesit in [hierdie gids](extracting-entitlements-from-compiled-application.md) onttrek word.
As jy met 'n gecompileerde toepassing werk, kan regte soos uiteengesit in [hierdie gids](extracting-entitlements-from-compiled-application.md) onttrek word.
### **Herwinning van die Apple App Site Association Lêer**
Die `apple-app-site-association` lêer moet van die bediener onttrek word met behulp van die domeine wat in die regte gespesifiseer is. Verseker dat die lêer via HTTPS direk by `https://<domain>/apple-app-site-association` toeganklik is. Gereedskap soos die [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) kan in hierdie proses help.
Die `apple-app-site-association` lêer moet van die bediener onttrek word met behulp van die domeine wat in die regte gespesifiseer is. Verseker dat die lêer via HTTPS direk by `https://<domain>/apple-app-site-association` (of `/.well-known/apple-app-site-association`) toeganklik is. Gereedskap soos die [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) kan in hierdie proses help.
> **Vinige enumerasie vanaf 'n macOS/Linux shell**
>
> ```bash
> # aanneem dat jy die regte na ent.xml onttrek het
> doms=$(plutil -extract com.apple.developer.associated-domains xml1 -o - ent.xml | \
> grep -oE 'applinks:[^<]+' | cut -d':' -f2)
> for d in $doms; do
> echo "[+] Fetching AASA for $d";
> curl -sk "https://$d/.well-known/apple-app-site-association" | jq '.'
> done
> ```
### **Hantering van Universele Skakels in die App**
Die app moet spesifieke metodes implementeer om universele skakels korrek te hanteer. Die primêre metode om na te kyk is [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Dit is van kardinale belang dat die skema van die URL's wat hanteer word HTTP of HTTPS is, aangesien ander nie ondersteun sal word nie.
Die app moet spesifieke metodes implementeer om universele skakels korrek te hanteer. Die primêre metode om na te kyk is [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Dit is van kardinale belang dat die skema van URL's wat hanteer word HTTP of HTTPS is, aangesien ander nie ondersteun sal word nie.
#### **Validasie van die Data Handler Metode**
@ -70,15 +82,36 @@ return false
}
}
```
Deur **diligente konfigurasie en validasie** kan ontwikkelaars verseker dat universele skakels die gebruikerservaring verbeter terwyl sekuriteit en privaatheidsstandaarde gehandhaaf word.
Deur **nette konfigurasie en validasie** kan ontwikkelaars verseker dat universele skakels die gebruikerservaring verbeter terwyl sekuriteit en privaatheidsstandaarde gehandhaaf word.
## Algemene Kw vulnerabilities & Pentesting Kontroles
| # | Swakheid | Hoe om te toets | Exploitatie / Impak |
|---|----------|------------|-----------------------|
| 1 | **Oor-brede `paths` / `components`** in die AASA-lêer (bv. `"/": "*"` of wildcard soos `"/a/*"`). | • Ondersoek die afgelaaide AASA en soek na `*`, agterste schuine streep, of `{"?": …}` reëls.<br>• Probeer om onbekende hulpbronne aan te vra wat steeds by die reël pas (`https://domain.com/a/evil?_p_dp=1`). | Universele-skakel-hijacking: 'n kwaadwillige iOS-app wat dieselfde domein registreer, kan al daardie skakels opeis en phishing UI aanbied. 'n Werklike voorbeeld is die Mei 2025 Temu.com fout-bounty verslag waar 'n aanvaller enige `/a/*` pad na hul eie app kon herlei. |
| 2 | **Ontbrekende bediener-kant validasie** van diep-skakel pades. | Nadat die toegelate pades geïdentifiseer is, stuur `curl`/Burp versoeke na nie-bestaande hulpbronne en observeer HTTP-statuskodes. Enige iets anders as `404` (bv. 200/302) is verdag. | 'n Aanvaller kan arbitrêre inhoud agter 'n toegelate pad huisves en dit via die wettige domein bedien, wat die sukseskoers van phishing of sessie-token-diefstal verhoog. |
| 3 | **App-kant URL hantering sonder skema/gasheer witlys** (CVE-2024-10474 Mozilla Focus < 132). | Soek na direkte `openURL:`/`open(_:options:)` oproepe of JavaScript-brugte wat arbitrêre URL's deurgee. | Interne bladsye kan `myapp://` of `https://` URL's smokkel wat die browser se URL-balk veiligheidstoetse omseil, wat lei tot spoofing of onbedoelde bevoorregte aksies. |
| 4 | **Gebruik van wildcard sub-domeine** (`*.example.com`) in die regte. | `grep` vir `*.` in die regte. | As enige sub-domein oorgeneem word (bv. via 'n ongebruikte S3-bucket), verkry die aanvaller outomaties die Universele Skakel binding. |
### Vinige Kontrollys
* [ ] Trek regte uit en tel elke `applinks:` inskrywing op.
* [ ] Laai AASA af vir elke inskrywing en oudit vir wildcards.
* [ ] Verifieer dat die webbediener **404** teruggee vir ongedefinieerde pades.
* [ ] Bevestig in die binêre dat **slegs** vertroude gashere/skemas hanteer word.
* [ ] As die app die nuwer `components` sintaksis gebruik (iOS 11+), fuzz query-parameter reëls (`{"?":{…}}`).
## Gereedskap
- [GetUniversal.link](https://getuniversal.link/): Help om die toetsing en bestuur van jou app se Universele Skakels en AASA-lêer te vereenvoudig. Voer eenvoudig jou domein in om die integriteit van die AASA-lêer te verifieer of gebruik die pasgemaakte dashboard om skakelgedrag maklik te toets. Hierdie hulpmiddel help jou ook om te bepaal wanneer Apple jou AASA-lêer volgende sal indekseer.
- [GetUniversal.link](https://getuniversal.link/): Help om die toetsing en bestuur van jou app se Universele Skakels en AASA-lêer te vereenvoudig. Voer eenvoudig jou domein in om AASA-lêer integriteit te verifieer of gebruik die pasgemaakte dashboard om maklik skakelgedrag te toets. Hierdie hulpmiddel help jou ook om te bepaal wanneer Apple jou AASA-lêer volgende sal indekseer.
- [Knil](https://github.com/ethanhuang13/knil): Open-source iOS nut wat elke Universele Skakel wat deur 'n domein verklaar is, direk op die toestel haal, ontleed en laat jou **tap-toets**.
- [universal-link-validator](https://github.com/urbangems/universal-link-validator): CLI / web validator wat streng AASA konformiteitskontroles uitvoer en gevaarlike wildcards uitlig.
## Verwysings
- [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}}