iOS Universal Links

Reading time: 4 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Wprowadzenie

Universal links oferują bezproblemowe przekierowanie użytkowników, otwierając bezpośrednio treści w aplikacji, omijając potrzebę przekierowania do Safari. Te linki są unikalne i bezpieczne, ponieważ nie mogą być przejęte przez inne aplikacje. Zapewnia to umieszczenie pliku apple-app-site-association w głównym katalogu witryny, co ustanawia weryfikowalny link między witryną a aplikacją. W przypadkach, gdy aplikacja nie jest zainstalowana, Safari przejmuje kontrolę i kieruje użytkownika na stronę internetową, utrzymując obecność aplikacji.

Dla testerów penetracyjnych plik apple-app-site-association jest szczególnie interesujący, ponieważ może ujawniać wrażliwe ścieżki, potencjalnie w tym te związane z niewydanymi funkcjami.

Analiza uprawnienia Associated Domains

Programiści włączają Universal Links, konfigurując Associated Domains w zakładce Capabilities w Xcode lub przeglądając plik .entitlements. Każda domena jest poprzedzona applinks:. Na przykład, konfiguracja Telegrama może wyglądać następująco:

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

Aby uzyskać bardziej szczegółowe informacje, zapoznaj się z archiwalną dokumentacją dewelopera Apple.

Jeśli pracujesz z skompilowaną aplikacją, uprawnienia można wyodrębnić zgodnie z opisem w tym przewodniku.

Pobieranie pliku Apple App Site Association

Plik apple-app-site-association powinien być pobrany z serwera przy użyciu domen określonych w uprawnieniach. Upewnij się, że plik jest dostępny przez HTTPS bezpośrednio pod adresem https://<domain>/apple-app-site-association. Narzędzia takie jak Apple App Site Association (AASA) Validator mogą pomóc w tym procesie.

Obsługa linków uniwersalnych w aplikacji

Aplikacja musi zaimplementować konkretne metody, aby poprawnie obsługiwać linki uniwersalne. Główną metodą, na którą należy zwrócić uwagę, jest application:continueUserActivity:restorationHandler:. Ważne jest, aby schemat obsługiwanych adresów URL był HTTP lub HTTPS, ponieważ inne nie będą wspierane.

Walidacja metody obsługi danych

Gdy link uniwersalny otwiera aplikację, obiekt NSUserActivity jest przekazywany do aplikacji z adresem URL. Przed przetworzeniem tego adresu URL ważne jest, aby go zwalidować i oczyścić, aby zapobiec zagrożeniom bezpieczeństwa. Oto przykład w Swift, który ilustruje ten proces:

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-e powinny być starannie analizowane i walidowane, szczególnie jeśli zawierają parametry, aby chronić przed potencjalnym podszywaniem się lub źle sformatowanymi danymi. API NSURLComponents jest przydatne w tym celu, jak pokazano poniżej:

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

Dzięki starannemu konfigurowaniu i walidacji deweloperzy mogą zapewnić, że uniwersalne linki poprawiają doświadczenia użytkowników, jednocześnie utrzymując standardy bezpieczeństwa i prywatności.

Narzędzia

  • GetUniversal.link: Pomaga uprościć testowanie i zarządzanie uniwersalnymi linkami oraz plikiem AASA Twojej aplikacji. Wystarczy wpisać swoją domenę, aby zweryfikować integralność pliku AASA lub skorzystać z niestandardowego pulpitu nawigacyjnego, aby łatwo przetestować zachowanie linków. To narzędzie pomaga również określić, kiedy Apple ponownie zindeksuje Twój plik AASA.

Odniesienia

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks