hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md
2024-02-10 18:14:16 +00:00

5.9 KiB
Raw Blame History

iOS UIActivity Paylaşımı

AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

UIActivity Paylaşımı Basitleştirildi

iOS 6'dan itibaren, üçüncü taraf uygulamaların metin, URL veya resim gibi verileri paylaşmasına olanak tanınmıştır. Bu özellik, Apple'ın Uygulama Arası İletişim kılavuzunda belirtildiği gibi AirDrop gibi mekanizmalar aracılığıyla gerçekleşir. Bu özellik, "Paylaş" düğmesiyle etkileşime geçildiğinde ortaya çıkan sistem genelinde bir paylaşım etkinlik sayfası ile kendini gösterir.

Tüm yerleşik paylaşım seçeneklerinin kapsamlı bir numaralandırması UIActivity.ActivityType adresinde bulunabilir. Geliştiriciler, uygulamaları için uygun bulmadıkları belirli paylaşım seçeneklerini hariç tutmayı tercih edebilirler.

Veri Nasıl Paylaşılır

Dikkat şu noktalara yönlendirilmelidir:

  • Paylaşılan verinin doğası.
  • Özel etkinliklerin dahil edilmesi.
  • Belirli etkinlik türlerinin hariç tutulması.

Paylaşım, paylaşılacak öğelerin geçirildiği bir UIActivityViewController örnekleme ile kolaylaştırılır. Bunun için aşağıdaki çağrı yapılır:

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Geliştiriciler, UIActivityViewController'ı incelemeli ve başlatıldığı aktiviteleri ve özel aktiviteleri, ayrıca belirtilen excludedActivityTypes'ı dikkatlice kontrol etmelidir.

Veri Alma Nasıl Yapılır

Veri alırken aşağıdaki unsurlar önemlidir:

  • Özel belge türlerinin bildirimi.
  • 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 hangi belge türlerini işleyebileceğini ve bildirebileceğini anlamak için Info.plist dosyası incelenebilir. UTExportedTypeDeclarations, UTImportedTypeDeclarations ve CFBundleDocumentTypes gibi anahtarlar bu tür belgelerin tanımlanması ve sistem genelinde tanınması için UTI'ların tanımlanmasının ve uygulamanızın "Aç ile" iletişim kutusuna entegre edilmesinin önemini vurgulamaktadır.

Bu anahtarlar hakkında özlü bir kılavuz Stackoverflow üzerinde mevcuttur.

Dinamik Test Yaklaşımı

Aktiviteleri göndermek için şunlar yapılabilir:

  • Paylaşılan öğeleri ve paylaşılan aktiviteleri yakalamak için init(activityItems:applicationActivities:) yöntemine bağlanmak.
  • excludedActivityTypes özelliğini engelleyen aktiviteleri yakalamak için excludedActivityTypes özelliğini engelleyen aktiviteleri yakalamak.

Öğeleri almak için şunlar yapılmalıdır:

  • Başka bir kaynaktan (örneğin, AirDrop, e-posta) uygulamayla bir dosya paylaşmak ve "Aç ile..." iletişim kutusunu tetiklemek.
  • Uygulamanın yanıtını gözlemlemek için statik analiz sırasında belirlenen diğer yöntemler arasında application:openURL:options: yöntemine bağlanmak.
  • Uygulamanın sağlamlığını değerlendirmek için hatalı dosyalar veya fuzzing teknikleri kullanmak.

Referanslar

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları: