mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
64 lines
5.2 KiB
Markdown
64 lines
5.2 KiB
Markdown
# iOS UIActivity Sharing
|
||
|
||
<details>
|
||
|
||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>からAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||
|
||
HackTricks をサポートする他の方法:
|
||
|
||
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
|
||
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||
|
||
</details>
|
||
|
||
# UIActivity Sharing Simplified
|
||
|
||
iOS 6以降、サードパーティアプリケーションは、Appleの[Inter-App Communicationガイド](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)で利用可能です。開発者は、アプリケーションに適さないと判断した場合、特定の共有オプションを除外することができます。
|
||
|
||
## **データの共有方法**
|
||
|
||
以下に注意すべき点があります:
|
||
|
||
- 共有されるデータの性質。
|
||
- カスタムアクティビティの含有。
|
||
- 特定のアクティビティタイプの除外。
|
||
|
||
共有は、共有するアイテムが渡される`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、メールなど)からアプリにファイルを共有し、「開く」ダイアログを表示します。
|
||
- 静的解析中に特定された他のメソッドと共に`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)
|