mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
56 lines
4.0 KiB
Markdown
56 lines
4.0 KiB
Markdown
# iOS UIActivity Sharing
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
# UIActivity Sharing Simplified
|
||
|
||
iOS 6以降、サードパーティアプリケーションは、Appleの[Inter-App Communication guide](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3)に記載されているように、AirDropなどのメカニズムを使用して**データ**(テキスト、URL、画像など)を**共有**できるようになりました。この機能は、「共有」ボタンと対話することで表示されるシステム全体の_共有アクティビティシート_を通じて現れます。
|
||
|
||
すべての組み込み共有オプションの包括的な列挙は、[UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)で利用可能です。開発者は、アプリケーションに不適切と判断した特定の共有オプションを除外することができます。
|
||
|
||
## **How to Share Data**
|
||
|
||
注意すべき点は以下の通りです:
|
||
|
||
- 共有されるデータの性質。
|
||
- カスタムアクティビティの含有。
|
||
- 特定のアクティビティタイプの除外。
|
||
|
||
共有は、共有するアイテムを渡す`UIActivityViewController`のインスタンス化を通じて行われます。これは、次のように呼び出すことで実現されます:
|
||
```bash
|
||
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
|
||
0x1000df034 45 44 initWithActivityItems:applicationActivities:
|
||
```
|
||
開発者は、`UIActivityViewController`が初期化される際のアクティビティやカスタムアクティビティ、ならびに指定された`excludedActivityTypes`を注意深く確認する必要があります。
|
||
|
||
## **データの受信方法**
|
||
|
||
データを受信する際に重要な側面は以下の通りです:
|
||
|
||
- **カスタムドキュメントタイプ**の宣言。
|
||
- アプリが開ける**ドキュメントタイプ**の指定。
|
||
- **受信データの整合性**の確認。
|
||
|
||
ソースコードにアクセスできない場合でも、`Info.plist`を調査して`UTExportedTypeDeclarations`、`UTImportedTypeDeclarations`、`CFBundleDocumentTypes`のようなキーを確認することで、アプリが扱えるドキュメントのタイプを理解できます。
|
||
|
||
これらのキーに関する簡潔なガイドは[Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)で入手可能で、システム全体での認識のためにUTIを定義およびインポートする重要性や、アプリとの統合のためにドキュメントタイプを関連付けることの重要性が強調されています。
|
||
|
||
## 動的テストアプローチ
|
||
|
||
**アクティビティの送信**をテストするには、以下のことが考えられます:
|
||
|
||
- `init(activityItems:applicationActivities:)`メソッドにフックして、共有されるアイテムやアクティビティをキャプチャする。
|
||
- `excludedActivityTypes`プロパティをインターセプトして除外されたアクティビティを特定する。
|
||
|
||
**アイテムの受信**には、以下が含まれます:
|
||
|
||
- 他のソース(例:AirDrop、メール)からアプリにファイルを共有し、「Open with...」ダイアログを表示させる。
|
||
- 静的分析中に特定された他のメソッドの中で`application:openURL:options:`にフックして、アプリの応答を観察する。
|
||
- 不正なファイルやファジング技術を使用してアプリの堅牢性を評価する。
|
||
|
||
## 参考文献
|
||
|
||
- [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)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|