iOS UIActivity Sharing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
iOS 6以降、サードパーティアプリケーションは、Appleのアプリ間通信ガイドに記載されているように、AirDropなどのメカニズムを使用して、テキスト、URL、画像などのデータを共有できるようになりました。この機能は、「共有」ボタンと対話することで表示されるシステム全体の_共有アクティビティシート_を通じて現れます。
すべての組み込み共有オプションの包括的な列挙は、UIActivity.ActivityTypeで利用可能です。開発者は、アプリケーションに不適切と判断した特定の共有オプションを除外することができます。
注意すべき点は以下の通りです:
共有されるデータの性質。
カスタムアクティビティの含有。
特定のアクティビティタイプの除外。
共有は、共有するアイテムを渡すUIActivityViewController
のインスタンス化を通じて促進されます。これは、次のように呼び出すことで実現されます:
Developers should scrutinize the UIActivityViewController
for the activities and custom activities it's initialized with, as well as any specified excludedActivityTypes
.
データを受信する際に重要な側面は以下の通りです:
カスタムドキュメントタイプの宣言。
アプリが開けるドキュメントタイプの指定。
受信データの整合性の確認。
ソースコードにアクセスできなくても、Info.plist
を調査してUTExportedTypeDeclarations
、UTImportedTypeDeclarations
、CFBundleDocumentTypes
のようなキーを確認することで、アプリが扱えるドキュメントの種類を理解できます。
これらのキーに関する簡潔なガイドはStackoverflowで入手可能で、システム全体での認識のためにUTIを定義およびインポートし、アプリとの統合のためにドキュメントタイプを関連付ける重要性を強調しています。
アクティビティの送信をテストするには、以下のことができます:
init(activityItems:applicationActivities:)
メソッドにフックして、共有されるアイテムとアクティビティをキャプチャする。
excludedActivityTypes
プロパティをインターセプトして除外されたアクティビティを特定する。
アイテムの受信には、以下が含まれます:
他のソース(例:AirDrop、メール)からアプリにファイルを共有し、「Open with...」ダイアログを表示させる。
静的分析中に特定された他のメソッドの中でapplication:openURL:options:
にフックしてアプリの応答を観察する。
不正なファイルやファジング技術を使用してアプリの堅牢性を評価する。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)