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:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu Pogledajte SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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.
Obrada Universal Links u aplikaciji
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
- 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
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite videti oglašavanje vaše kompanije u HackTricks-u ili preuzeti HackTricks u PDF formatu, proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.