mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
80 lines
5.8 KiB
Markdown
80 lines
5.8 KiB
Markdown
# iOS UIActivity Paylaşımı
|
||
|
||
{% hint style="success" %}
|
||
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>HackTricks'i Destekleyin</summary>
|
||
|
||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi **takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
# UIActivity Paylaşımının Basitleştirilmesi
|
||
|
||
iOS 6'dan itibaren, üçüncü taraf uygulamalar, Apple'ın [Uygulamalar Arası İletişim kılavuzunda](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) 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](https://developer.apple.com/documentation/uikit/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:
|
||
```bash
|
||
$ 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, ayrıca belirtilen `excludedActivityTypes`'ı da göz önünde bulundurmalıdır.
|
||
|
||
## **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 verilerin bütünlüğünün** doğrulanması.
|
||
|
||
Kaynak koduna erişim olmadan, `Info.plist` dosyasında `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` ve `CFBundleDocumentTypes` gibi anahtarları inceleyerek bir uygulamanın işleyebileceği ve beyan edebileceği belge türlerini anlamak mümkündür.
|
||
|
||
Bu anahtarlar hakkında kısa bir rehber [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i) üzerinde mevcuttur ve sistem genelinde tanınma için UTIs tanımlamanın ve içe aktarmanın önemini vurgular, ayrıca belge türlerini uygulamanızla ilişkilendirerek "Aç" diyalogunda entegrasyon sağlar.
|
||
|
||
## Dinamik Test Yaklaşımı
|
||
|
||
**gönderme aktivitelerini** test etmek için:
|
||
|
||
- Paylaşılan öğeleri ve aktiviteleri yakalamak için `init(activityItems:applicationActivities:)` yöntemine hook atılabilir.
|
||
- `excludedActivityTypes` özelliğini keserek hariç tutulan aktiviteleri belirlemek mümkündür.
|
||
|
||
**öğeleri alma** süreci ise:
|
||
|
||
- "Aç..." diyalogunu 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öntemler arasında `application:openURL:options:` yöntemine hook atmak.
|
||
- Uygulamanın dayanıklılığını değerlendirmek için hatalı dosyalar veya fuzzing teknikleri kullanmak.
|
||
|
||
## Referanslar
|
||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|