hacktricks/mobile-pentesting/ios-pentesting/ios-universal-links.md
2024-02-10 13:11:20 +00:00

7 KiB

iOS Univerzalni linkovi

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Uvod

Univerzalni linkovi pružaju bezbedno preusmeravanje korisnicima tako što direktno otvaraju sadržaj u aplikaciji, zaobilazeći potrebu za preusmeravanjem preko Safari-ja. Ovi linkovi su jedinstveni i sigurni, jer ih druge aplikacije ne mogu koristiti. To se obezbeđuje postavljanjem apple-app-site-association JSON fajla na korenski direktorijum veb sajta, uspostavljajući proverljivu vezu između veb sajta i aplikacije. U slučajevima kada aplikacija nije instalirana, Safari će preuzeti kontrolu i usmeriti korisnika na veb stranicu, održavajući prisustvo aplikacije.

Za testere penetracije, fajl apple-app-site-association je posebno interesantan jer može otkriti osetljive putanje, potencijalno uključujući one koje se odnose na neobjavljene funkcionalnosti.

Analiziranje dozvole za povezane domene

Razvojni programeri omogućavaju Univerzalne linkove konfigurisanjem Povezanih domena u Xcode-ovom tabu Mogućnosti ili inspekcijom .entitlements fajla. Svaki domen ima prefiks applinks:. Na primer, konfiguracija Telegram-a može izgledati ovako:

<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>

Za sveobuhvatnije uvide, pogledajte arhiviranu Apple Developer dokumentaciju.

Ako radite sa kompajliranom aplikacijom, dozvole se mogu izvući kako je opisano u ovom vodiču.

Dobijanje Apple App Site Association fajla

Fajl apple-app-site-association treba dobiti sa servera koristeći domene navedene u dozvolama. Proverite da li je fajl dostupan putem HTTPS direktno na https://<domen>/apple-app-site-association. Alati poput Apple App Site Association (AASA) Validator mogu pomoći u ovom procesu.

Aplikacija mora implementirati određene metode kako bi pravilno obradila universal linkove. Primarna metoda koju treba tražiti je application:continueUserActivity:restorationHandler:. Bitno je da šema URL-ova koje se obrađuju bude HTTP ili HTTPS, jer druge neće biti podržane.

Validacija metode za obradu podataka

Kada se universal link otvori u aplikaciji, NSUserActivity objekat se prosleđuje aplikaciji sa URL-om. Pre obrade ovog URL-a, bitno je validirati i dezinfikovati ga kako bi se sprečili sigurnosni rizici. Evo primera u Swift-u koji demonstrira proces:

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-ovi treba pažljivo analizirati i validirati, posebno ako sadrže parametre, kako bi se zaštitili od potencijalnih prevara ili neispravnih podataka. NSURLComponents API je koristan u tu svrhu, kao što je prikazano u nastavku:

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
}
}

Kroz pažljivu konfiguraciju i validaciju, programeri mogu osigurati da univerzalni linkovi poboljšaju korisničko iskustvo, istovremeno održavajući standarde sigurnosti i privatnosti.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: