mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
92 lines
6.3 KiB
Markdown
92 lines
6.3 KiB
Markdown
<details>
|
|
|
|
<summary><strong>Dowiedz się, jak 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>
|
|
|
|
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)!
|
|
* 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)
|
|
* **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.
|
|
|
|
</details>
|
|
|
|
To jest podsumowanie związanych informacji z [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
|
|
|
## Podstawowe informacje
|
|
|
|
Niestandardowe schematy URL umożliwiają aplikacjom komunikację za pomocą niestandardowego protokołu, jak szczegółowo opisano w [Dokumentacji dla programistów Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Te schematy muszą być zadeklarowane przez aplikację, która następnie obsługuje przychodzące adresy URL zgodnie z tymi schematami. Ważne jest, aby **sprawdzać wszystkie parametry URL** i **odrzucić wszelkie nieprawidłowe adresy URL**, aby zapobiec atakom przez ten wektor.
|
|
|
|
Przykładem jest URI `myapp://hostname?data=123876123`, który wywołuje określoną akcję aplikacji. Zauważono podatność w aplikacji Skype Mobile, która umożliwiała nieautoryzowane akcje połączeń za pomocą protokołu `skype://`. Zarejestrowane schematy można znaleźć w pliku `Info.plist` aplikacji w sekcji `CFBundleURLTypes`. Złośliwe aplikacje mogą wykorzystać to, ponownie rejestrując adresy URL w celu przechwycenia poufnych informacji.
|
|
|
|
### Rejestracja schematów zapytań aplikacji
|
|
|
|
Od wersji iOS 9.0, aby sprawdzić, czy aplikacja jest dostępna, `canOpenURL:` wymaga zadeklarowania schematów URL w pliku `Info.plist` w sekcji `LSApplicationQueriesSchemes`. Ogranicza to schematy, które aplikacja może zapytać do 50, zwiększając prywatność poprzez zapobieganie wyliczaniu aplikacji.
|
|
```xml
|
|
<key>LSApplicationQueriesSchemes</key>
|
|
<array>
|
|
<string>url_scheme1</string>
|
|
<string>url_scheme2</string>
|
|
</array>
|
|
```
|
|
### Testowanie obsługi i walidacji adresów URL
|
|
|
|
Programiści powinni sprawdzić konkretne metody w kodzie źródłowym, aby zrozumieć konstrukcję i walidację ścieżki adresu URL, takie jak `application:didFinishLaunchingWithOptions:` i `application:openURL:options:`. Na przykład, Telegram korzysta z różnych metod otwierania adresów URL:
|
|
```swift
|
|
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
|
|
self.openUrl(url: url)
|
|
return true
|
|
}
|
|
|
|
func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
|
|
annotation: Any) -> Bool {
|
|
self.openUrl(url: url)
|
|
return true
|
|
}
|
|
|
|
func application(_ app: UIApplication, open url: URL,
|
|
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
|
|
self.openUrl(url: url)
|
|
return true
|
|
}
|
|
|
|
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
|
|
self.openUrl(url: url)
|
|
return true
|
|
}
|
|
```
|
|
### Testowanie żądań URL do innych aplikacji
|
|
|
|
Metody takie jak `openURL:options:completionHandler:` są kluczowe do otwierania adresów URL w celu interakcji z innymi aplikacjami. Zidentyfikowanie użycia takich metod w kodzie źródłowym aplikacji jest kluczowe dla zrozumienia komunikacji zewnętrznej.
|
|
|
|
### Testowanie przestarzałych metod
|
|
|
|
Metody obsługujące otwieranie adresów URL, takie jak `application:handleOpenURL:` i `openURL:`, które są przestarzałe, powinny być zidentyfikowane i przeanalizowane pod kątem implikacji dla bezpieczeństwa.
|
|
|
|
### Fuzzowanie schematów URL
|
|
|
|
Fuzzowanie schematów URL może pomóc w identyfikacji błędów korupcji pamięci. Narzędzia takie jak [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) mogą zautomatyzować ten proces, otwierając adresy URL z różnymi ładunkami, aby monitorować ewentualne awarie, jak to zostało pokazane na przykładzie manipulacji adresami URL w aplikacji iGoat-Swift:
|
|
```bash
|
|
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
|
|
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
|
|
Watching for crashes from iGoat...
|
|
No logs were moved.
|
|
Opened URL: iGoat://?contactNumber=0&message=0
|
|
```
|
|
## Odwołania
|
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
|
|
|
<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>
|
|
|
|
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)!
|
|
* 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)
|
|
* **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) repozytoriów github.
|
|
|
|
</details>
|