6.1 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
To jest podsumowanie związanych informacji z 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 dewelopera Apple. Te schematy muszą być zadeklarowane przez aplikację, która następnie obsługuje przychodzące URL-e zgodnie z tymi schematami. Kluczowe jest walidowanie wszystkich parametrów URL oraz odrzucanie wszelkich źle sformułowanych URL-i, aby zapobiec atakom przez ten wektor.
Podano przykład, w którym URI myapp://hostname?data=123876123
wywołuje określoną akcję aplikacji. Zauważona podatność występowała w aplikacji Skype Mobile, która umożliwiała nieautoryzowane akcje połączeń za pomocą protokołu skype://
. Zarejestrowane schematy można znaleźć w Info.plist
aplikacji w sekcji CFBundleURLTypes
. Złośliwe aplikacje mogą to wykorzystać, ponownie rejestrując URI, aby przechwytywać wrażliwe informacje.
Rejestracja schematów zapytań aplikacji
Od iOS 9.0, aby sprawdzić, czy aplikacja jest dostępna, canOpenURL:
wymaga zadeklarowania schematów URL w Info.plist
w sekcji LSApplicationQueriesSchemes
. Ogranicza to schematy, które aplikacja może zapytać do 50, zwiększając prywatność poprzez zapobieganie enumeracji aplikacji.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
Testing URL Handling and Validation
Programiści powinni zbadać konkretne metody w kodzie źródłowym, aby zrozumieć konstrukcję i walidację ścieżek URL, takie jak application:didFinishLaunchingWithOptions:
i application:openURL:options:
. Na przykład, Telegram wykorzystuje różne metody do otwierania URL-i:
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 URL-i w celu interakcji z innymi aplikacjami. Identyfikacja użycia takich metod w kodzie źródłowym aplikacji jest kluczowa dla zrozumienia komunikacji zewnętrznej.
Testowanie przestarzałych metod
Przestarzałe metody obsługujące otwieranie URL-i, takie jak application:handleOpenURL:
i openURL:
, powinny być zidentyfikowane i przeanalizowane pod kątem implikacji bezpieczeństwa.
Fuzzing schematów URL
Fuzzing schematów URL może zidentyfikować błędy związane z uszkodzeniem pamięci. Narzędzia takie jak Frida mogą zautomatyzować ten proces, otwierając URL-e z różnymi ładunkami w celu monitorowania awarii, co ilustruje manipulacja URL-ami w aplikacji iGoat-Swift:
$ 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
References
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.