iOS Custom URI Handlers / Deeplinks / Custom Schemes

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Özel URL şemaları, uygulamaların Apple Geliştirici Dokümantasyonu detaylarında açıklandığı gibi, özel bir protokol kullanarak iletişim kurmasını sağlar. Bu şemalar, uygulama tarafından beyan edilmeli ve ardından bu şemalara uygun gelen URL'leri işlemesi gerekmektedir. Tüm URL parametrelerini doğrulamak ve herhangi bir hatalı URL'yi atmak saldırıları önlemek için kritik öneme sahiptir.

myapp://hostname?data=123876123 URI'sinin belirli bir uygulama eylemini tetiklediği bir örnek verilmiştir. Skype Mobil uygulamasında, skype:// protokolü aracılığıyla izinsiz arama eylemlerine izin veren bir güvenlik açığı not edilmiştir. Kayıtlı şemalar, uygulamanın Info.plist dosyasında CFBundleURLTypes altında bulunabilir. Kötü niyetli uygulamalar, hassas bilgileri ele geçirmek için URI'leri yeniden kaydederek bunu istismar edebilir.

Uygulama Sorgu Şemaları Kaydı

iOS 9.0'dan itibaren, bir uygulamanın mevcut olup olmadığını kontrol etmek için canOpenURL: kullanımı, Info.plist dosyasında LSApplicationQueriesSchemes altında URL şemalarının beyan edilmesini gerektirir. Bu, bir uygulamanın sorgulayabileceği şemaları 50 ile sınırlayarak, uygulama sayımını önleyerek gizliliği artırır.

<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>

URL İşleme ve Doğrulama Testi

Geliştiriciler, URL yol yapısını ve doğrulamasını anlamak için kaynak kodundaki belirli yöntemleri incelemelidir, örneğin application:didFinishLaunchingWithOptions: ve application:openURL:options:. Örneğin, Telegram, URL'leri açmak için çeşitli yöntemler kullanır:

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
}

Diğer Uygulamalara URL İsteklerini Test Etme

openURL:options:completionHandler: gibi yöntemler, diğer uygulamalarla etkileşimde bulunmak için URL'leri açmak açısından kritik öneme sahiptir. Uygulamanın kaynak kodunda bu tür yöntemlerin kullanımını belirlemek, dış iletişimleri anlamak için anahtardır.

Kullanımdan Kaldırılan Yöntemleri Test Etme

application:handleOpenURL: ve openURL: gibi URL açma işlemlerini yöneten kullanımdan kaldırılan yöntemler, güvenlik etkileri açısından belirlenmeli ve gözden geçirilmelidir.

URL Şemalarını Fuzzing

URL şemalarını fuzzing yapmak, bellek bozulması hatalarını belirleyebilir. Frida gibi araçlar, çökme durumlarını izlemek için farklı yüklerle URL'leri açarak bu süreci otomatikleştirebilir; bu, iGoat-Swift uygulamasındaki URL'lerin manipülasyonu ile örneklendirilmiştir:

$ 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

Özel URL şeması kaçırma

bu gönderiye göre, kötü niyetli uygulamalar diğer uygulamaların özel şemalarını kaydedebilir, ardından kötü niyetli uygulama, ASWebAuthenticationSession ile Safari Uygulamasının tüm çerezlerine sahip bir tarayıcı açabilir.

Kötü niyetli uygulama, tarayıcı ile bir saldırganın kontrolündeki web sayfasını yükleyebilir ve TCC, mobil kullanıcıdan o uygulamayı açmak için izin isteyecektir. Ardından, kötü niyetli web sayfası, örneğin prompt=none parametresi ile bir OAuth akışına yönlendirebilir. Kullanıcı zaten OAuth akışında oturum açmışsa, OAuth akışı, kurban uygulamasına kurban uygulamanın özel şemasını kullanarak gizli anahtarı geri gönderecektir. Ancak, kötü niyetli uygulama bunu da kaydettiği için ve kullanılan tarayıcı kötü niyetli uygulamanın içinde olduğu için, bu durumda özel şema kötü niyetli uygulama tarafından işlenecek ve OAuth token'ını çalma yeteneğine sahip olacaktır.

Referanslar

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Last updated