iOS Universal Links

Reading time: 4 minutes

tip

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

HackTricks'i Destekleyin

Giriş

Evrensel bağlantılar, kullanıcılar için kesintisiz bir yönlendirme deneyimi sunarak içeriği doğrudan uygulamada açar ve Safari yönlendirmesi gereksinimini ortadan kaldırır. Bu bağlantılar benzersiz ve güvenlidir, çünkü diğer uygulamalar tarafından talep edilemezler. Bu, web sitesinin kök dizininde bir apple-app-site-association JSON dosyası barındırarak sağlanır ve web sitesi ile uygulama arasında doğrulanabilir bir bağlantı kurar. Uygulama yüklü değilse, Safari devralır ve kullanıcıyı web sayfasına yönlendirir, uygulamanın varlığını korur.

Penetrasyon test uzmanları için apple-app-site-association dosyası özellikle ilgi çekicidir çünkü hassas yolları açığa çıkarabilir, potansiyel olarak yayımlanmamış özelliklerle ilgili olanları da içerebilir.

İlişkili Alanlar Yetkisini Analiz Etme

Geliştiriciler, Xcode'un Yetenekler sekmesinde İlişkili Alanlar'ı yapılandırarak veya .entitlements dosyasını inceleyerek Evrensel Bağlantıları etkinleştirir. Her alan applinks: ile başlar. Örneğin, Telegram'ın yapılandırması şu şekilde görünebilir:

xml
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>

Daha kapsamlı bilgiler için arşivlenmiş Apple Geliştirici Dokümantasyonu sayfasına başvurun.

Derlenmiş bir uygulama ile çalışıyorsanız, haklar bu kılavuzda açıklandığı gibi çıkarılabilir.

Apple Uygulama Site İlişkilendirme Dosyasını Alma

apple-app-site-association dosyası, haklarda belirtilen alan adları kullanılarak sunucudan alınmalıdır. Dosyanın https://<domain>/apple-app-site-association adresinden HTTPS üzerinden erişilebilir olduğundan emin olun. Apple Uygulama Site İlişkilendirme (AASA) Doğrulayıcı gibi araçlar bu süreçte yardımcı olabilir.

Uygulamada Evrensel Bağlantıları Yönetme

Uygulama, evrensel bağlantıları doğru bir şekilde yönetmek için belirli yöntemleri uygulamalıdır. Bakılması gereken ana yöntem application:continueUserActivity:restorationHandler: yöntemidir. İşlenen URL'lerin şemasının HTTP veya HTTPS olması kritik öneme sahiptir, diğerleri desteklenmeyecektir.

Veri İşleyici Yöntemini Doğrulama

Bir evrensel bağlantı bir uygulamayı açtığında, uygulamaya URL ile birlikte bir NSUserActivity nesnesi iletilir. Bu URL'yi işlemeye başlamadan önce, güvenlik risklerini önlemek için doğrulamak ve temizlemek önemlidir. İşte süreci gösteren bir Swift örneği:

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

URL'ler dikkatlice ayrıştırılmalı ve doğrulanmalıdır, özellikle parametreler içeriyorsa, potansiyel sahtecilik veya hatalı verilerden korunmak için. Bu amaçla NSURLComponents API'si faydalıdır, aşağıda gösterildiği gibi:

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

Titiz yapılandırma ve doğrulama sayesinde, geliştiriciler evrensel bağlantıların kullanıcı deneyimini artırırken güvenlik ve gizlilik standartlarını korumasını sağlayabilirler.

Araçlar

  • GetUniversal.link: Uygulamanızın Evrensel Bağlantılarını ve AASA dosyasını test etmeyi ve yönetmeyi basitleştirmeye yardımcı olur. AASA dosyası bütünlüğünü doğrulamak için yalnızca alan adınızı girin veya bağlantı davranışını kolayca test etmek için özel kontrol panelini kullanın. Bu araç ayrıca Apple'ın AASA dosyanızı bir sonraki ne zaman dizine alacağını belirlemenize de yardımcı olur.

Referanslar

tip

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

HackTricks'i Destekleyin