# iOS Universele Skakels
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
## Inleiding
Universele skakels bied 'n **naadlose omleidingservaring** aan gebruikers deur inhoud direk in die app te open, sonder die nodigheid van Safari-omleiding. 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 hoofgids te hê, wat 'n verifieerbare skakel tussen die webwerf en die app vestig. In gevalle waar die app nie geïnstalleer is nie, sal Safari oorneem en die gebruiker na die webblad lei, terwyl die app teenwoordig bly.
Vir penetrasietoetsers is die `apple-app-site-association`-lêer van besondere belang, aangesien dit moontlik **sensitiewe paaie** kan onthul, moontlik insluitend paaie wat verband hou met onvrygestelde funksies.
### **Ontleding van die Verwante Domeine Toekenning**
Ontwikkelaars aktiveer Universele Skakels deur die **Verwante Domeine** te konfigureer in Xcode se Vermoëns-tabblad of deur die `.entitlements`-lêer te ondersoek. Elke domein word voorafgegaan deur `applinks:`. Byvoorbeeld, Telegram se konfigurasie kan soos volg lyk:
```xml
com.apple.developer.associated-domains
applinks:telegram.me
applinks:t.me
```
Vir meer omvattende insigte, verwys na die [geargiveerde Apple Developer-dokumentasie](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
As jy werk met 'n saamgestelde toepassing, kan toekennings soos uiteengesit in [hierdie gids](extracting-entitlements-from-compiled-application.md) onttrek word.
### **Die Apple App Site Association-lêer ophaal**
Die `apple-app-site-association`-lêer moet van die bediener afgehaal word deur die domeine wat in die toekennings gespesifiseer is. Maak seker dat die lêer direk toeganklik is via HTTPS by `https:///apple-app-site-association`. Hulpmiddels soos die [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) kan help met hierdie proses.
### **Hantering van Universele Skakels in die Toepassing**
Die toepassing 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 noodsaaklik dat die skema van die behandelde URL's HTTP of HTTPS is, aangesien ander nie ondersteun sal word nie.
#### **Validasie van die Data Handler-metode**
Wanneer 'n universele skakel 'n toepassing oopmaak, word 'n `NSUserActivity`-voorwerp na die toepassing gestuur saam met die URL. Voordat hierdie URL verwerk word, is dit noodsaaklik om dit te valideer en te saniteer om sekuriteitsrisiko's te voorkom. Hier is 'n voorbeeld in Swift wat die proses demonstreer:
```swift
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
}
```
URL's moet sorgvuldig geparseer en gevalideer word, veral as dit parameters bevat, om te voorkom dat potensiële vervalsing of verkeerde data plaasvind. Die `NSURLComponents` API is nuttig vir hierdie doel, soos hieronder gedemonstreer:
```swift
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
}
}
```
Deur **noukeurige konfigurasie en validering**, kan ontwikkelaars verseker dat universele skakels die gebruikerservaring verbeter terwyl sekuriteits- en privaatheidsstandaarde gehandhaaf word.
## 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)
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.