hacktricks/mobile-pentesting/ios-pentesting/ios-universal-links.md
2024-02-11 01:46:25 +00:00

7.3 KiB

iOS Universal Links

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Wprowadzenie

Uniwersalne linki oferują użytkownikom bezproblemowe przekierowanie, otwierając zawartość bezpośrednio w aplikacji, omijając konieczność przekierowania przez Safari. Te linki są unikalne i bezpieczne, ponieważ nie mogą być używane przez inne aplikacje. Zapewnione jest to poprzez umieszczenie pliku JSON apple-app-site-association w katalogu głównym witryny, co tworzy sprawdzalny link między witryną a aplikacją. W przypadku, gdy aplikacja nie jest zainstalowana, Safari przejmie kontrolę i przekieruje użytkownika na stronę internetową, zachowując obecność aplikacji.

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

Analiza uprawnień powiązanych domen

Deweloperzy włączają Uniwersalne Linki, konfigurując Powiązane Domeny w zakładce Zdolności Xcode lub poprzez sprawdzenie pliku .entitlements. Każda domena jest poprzedzona prefiksem applinks:. Na przykład, konfiguracja Telegramu może wyglądać następująco:

<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, odwołaj się do archiwalnej dokumentacji Apple Developer.

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

Pobieranie pliku Apple App Site Association

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

Obsługa uniwersalnych linków w aplikacji

Aplikacja musi zaimplementować konkretne metody, aby poprawnie obsługiwać uniwersalne linki. 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ą obsługiwane.

Weryfikacja metody obsługi danych

Gdy uniwersalny link otwiera aplikację, do aplikacji przekazywany jest obiekt NSUserActivity z adresem URL. Przed przetworzeniem tego adresu URL ważne jest jego sprawdzenie i oczyszczenie w celu zapobieżenia ryzyku bezpieczeństwa. Oto przykład w języku Swift, który ilustruje ten 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
}

Adresy URL powinny być starannie analizowane i sprawdzane, zwłaszcza jeśli zawierają parametry, aby zapobiec potencjalnemu podszywaniu się lub nieprawidłowym danym. Interfejs API NSURLComponents jest przydatny w tym celu, jak pokazano poniżej:

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

Poprzez staranne konfigurowanie i weryfikowanie, programiści mogą zapewnić, że uniwersalne linki poprawią doświadczenie użytkownika, jednocześnie zachowując standardy bezpieczeństwa i prywatności.

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: