7.1 KiB
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!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en 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:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
Vir meer omvattende insigte, verwys na die geargiveerde Apple Developer-dokumentasie.
As jy werk met 'n saamgestelde toepassing, kan toekennings soos uiteengesit in hierdie gids 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://<domain>/apple-app-site-association
. Hulpmiddels soos die Apple App Site Association (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:
. 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:
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:
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://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!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-repos.