iOS UIActivity Paylaşımı
Reading time: 3 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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
UIActivity Paylaşımını Basitleştirme
iOS 6'dan itibaren, üçüncü taraf uygulamalar, Apple'ın Uygulamalar Arası İletişim kılavuzunda belirtildiği gibi, AirDrop gibi mekanizmaları kullanarak metin, URL veya resim gibi veri paylaşma yeteneğine sahip olmuştur. Bu özellik, "Paylaş" butonuna etkileşimde bulunulduğunda ortaya çıkan sistem genelinde bir paylaşım etkinliği sayfası aracılığıyla kendini gösterir.
Tüm yerleşik paylaşım seçeneklerinin kapsamlı bir listesi UIActivity.ActivityType adresinde mevcuttur. Geliştiriciler, uygulamaları için uygun olmadığını düşündükleri belirli paylaşım seçeneklerini hariç tutmayı tercih edebilirler.
Veri Nasıl Paylaşılır
Dikkat edilmesi gerekenler:
- Paylaşılan verinin niteliği.
- Özel etkinliklerin dahil edilmesi.
- Belirli etkinlik türlerinin hariç tutulması.
Paylaşım, paylaşılacak öğelerin geçirildiği bir UIActivityViewController
örneği oluşturularak kolaylaştırılır. Bu, şu şekilde çağrılarak gerçekleştirilir:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
Geliştiriciler, UIActivityViewController
'ı başlatıldığı aktiviteler ve özel aktiviteler için dikkatlice incelemeli ve belirtilen excludedActivityTypes
'ı kontrol etmelidir.
Veri Alma Yöntemi
Veri alırken aşağıdaki unsurlar kritik öneme sahiptir:
- özel belge türlerinin beyanı.
- Uygulamanın açabileceği belge türlerinin belirtilmesi.
- Alınan verinin bütünlüğünün doğrulanması.
Kaynak koduna erişim olmadan, bir uygulamanın işleyebileceği ve beyan edebileceği belge türlerini anlamak için Info.plist
'i UTExportedTypeDeclarations
, UTImportedTypeDeclarations
ve CFBundleDocumentTypes
gibi anahtarlar için incelemek mümkündür.
Bu anahtarlar hakkında kısa bir rehber Stackoverflow üzerinde mevcuttur ve sistem genelinde tanınma için UTI'lerin tanımlanması ve içe aktarılmasının önemini vurgular, ayrıca belge türlerini uygulamanızla ilişkilendirerek "Aç" diyaloğunda entegrasyon sağlar.
Dinamik Test Yaklaşımı
Aktivite gönderimini test etmek için:
- Paylaşılan öğeleri ve aktiviteleri yakalamak için
init(activityItems:applicationActivities:)
yöntemine hook yapabilirsiniz. excludedActivityTypes
özelliğini keserek hariç tutulan aktiviteleri belirleyebilirsiniz.
Öğeleri alma süreci ise:
- "Aç..." diyaloğunu tetikleyen başka bir kaynaktan (örneğin, AirDrop, e-posta) uygulama ile bir dosya paylaşmayı içerir.
- Uygulamanın yanıtını gözlemlemek için statik analiz sırasında belirlenen diğer yöntemlerin yanı sıra
application:openURL:options:
'a hook yapmayı içerir. - Uygulamanın dayanıklılığını değerlendirmek için hatalı dosyalar veya fuzzing teknikleri kullanmayı içerir.
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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.