Translated ['mobile-pentesting/ios-pentesting/ios-universal-links.md'] t

This commit is contained in:
Translator 2024-06-19 10:55:57 +00:00
parent 8d68c5125e
commit cbb73722b6

View file

@ -1,30 +1,30 @@
# iOS Universal Links # iOS Uniwersalne Linki
<details> <details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks: Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
## Wprowadzenie ## 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. Uniwersalne linki oferują **bezproblemowe przekierowanie** użytkownikom poprzez bezpośrednie otwieranie zawartości w aplikacji, omijając konieczność przekierowania przez Safari. Te linki są **unikalne** i bezpieczne, ponieważ nie mogą być przejęte przez inne aplikacje. Zapewniają to poprzez umieszczenie pliku JSON `apple-app-site-association` w katalogu głównym strony internetowej, ustanawiając weryfikowalny link między stroną a aplikacją. W przypadkach, 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. Dla testerów penetracyjnych plik `apple-app-site-association` jest szczególnie interesujący, ponieważ może ujawnić **czułe ścieżki**, potencjalnie związane z niepublikowanymi funkcjami.
### **Analiza uprawnień powiązanych domen** ### **Analiza Uprawnienia 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: Deweloperzy aktywują Uniwersalne Linki, konfigurując **Powiązane Domeny** w zakładce Zdolności Xcode lub inspekcjonując plik `.entitlements`. Każda domena jest poprzedzona `applinks:`. Na przykład, konfiguracja Telegrama może wyglądać następująco:
```xml ```xml
<key>com.apple.developer.associated-domains</key> <key>com.apple.developer.associated-domains</key>
<array> <array>
@ -32,21 +32,21 @@ Deweloperzy włączają Uniwersalne Linki, konfigurując **Powiązane Domeny** w
<string>applinks:t.me</string> <string>applinks:t.me</string>
</array> </array>
``` ```
Aby uzyskać bardziej szczegółowe informacje, odwołaj się do [archiwalnej dokumentacji Apple Developer](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2). Aby uzyskać bardziej wszechstronne spojrzenie, zapoznaj się z [zarchiwizowaną dokumentacją dla deweloperów Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Jeśli pracujesz z skompilowaną aplikacją, uprawnienia można wyodrębnić zgodnie z [tym przewodnikiem](extracting-entitlements-from-compiled-application.md). Jeśli pracujesz z skompilowaną aplikacją, uprawnienia można wyodrębnić zgodnie z [tym przewodnikiem](extracting-entitlements-from-compiled-application.md).
### **Pobieranie pliku Apple App Site Association** ### **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](https://branch.io/resources/aasa-validator/) mogą pomóc w tym procesie. 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://<domain>/apple-app-site-association`. Narzędzia takie jak [Walidator Apple App Site Association (AASA)](https://branch.io/resources/aasa-validator/) mogą pomóc w tym procesie.
### **Obsługa uniwersalnych linków w aplikacji** ### **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:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Ważne jest, aby schemat obsługiwanych adresów URL był HTTP lub HTTPS, ponieważ inne nie będą obsługiwane. Aplikacja musi zaimplementować konkretne metody, aby poprawnie obsługiwać uniwersalne linki. Główną metodą do sprawdzenia jest [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). 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** #### **Sprawdzanie 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: Gdy uniwersalny link otwiera aplikację, obiekt `NSUserActivity` jest przekazywany do aplikacji wraz z adresem URL. Przed przetworzeniem tego adresu URL istotne jest jego zweryfikowanie i oczyszczenie w celu zapobieżenia ryzyku bezpieczeństwa. Oto przykład w języku Swift, który demonstruje ten proces:
```swift ```swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity, func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
@ -58,7 +58,7 @@ application.open(url, options: [:], completionHandler: nil)
return true 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: URL-ów należy ostrożnie analizować i sprawdzać poprawność, szczególnie jeśli zawierają parametry, aby zabezpieczyć się przed potencjalnym podszywaniem się lub nieprawidłowymi danymi. Interfejs API `NSURLComponents` jest przydatny w tym celu, jak pokazano poniżej:
```swift ```swift
func application(_ application: UIApplication, func application(_ application: UIApplication,
continue userActivity: NSUserActivity, continue userActivity: NSUserActivity,
@ -84,12 +84,13 @@ 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. Poprzez **staranną konfigurację i walidację**, programiści mogą zapewnić, że uniwersalne linki poprawią doświadczenie użytkownika, jednocześnie zachowując standardy bezpieczeństwa i prywatności.
## Narzędzia
* [GetUniversal.link](https://getuniversal.link/): Pomaga upraszczać testowanie i zarządzanie uniwersalnymi linkami i plikiem AASA twojej aplikacji. Wystarczy wpisać swoją domenę, aby zweryfikować integralność pliku AASA lub skorzystać z niestandardowej tablicy rozdzielczej, aby łatwo przetestować zachowanie linku. To narzędzie również pomaga określić, kiedy Apple zindeksuje następny plik AASA.
## Odnośniki
## Odwołania
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis) * [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](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](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8) * [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
@ -97,12 +98,12 @@ Poprzez **staranne konfigurowanie i weryfikowanie**, programiści mogą zapewni
<details> <details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Zacznij od zera i zostań ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks: Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.