iOS UIActivity Sharing

iOS UIActivity Sharing

htARTE(HackTricks AWS Red Team Expert) からAWSハッキングをゼロからヒーローまで学ぶ

HackTricks をサポートする他の方法:

UIActivity Sharing Simplified

iOS 6以降、サードパーティアプリケーションは、AppleのInter-App Communicationガイドで説明されているように、AirDropなどのメカニズムを使用してテキスト、URL、画像などのデータを共有できるようになりました。この機能は、"共有"ボタンを操作すると表示されるシステム全体の_共有アクティビティシート_を介して表れます。

すべての組み込み共有オプションの包括的な列挙はUIActivity.ActivityTypeで利用可能です。開発者は、アプリケーションに適さないと判断した場合、特定の共有オプションを除外することができます。

データの共有方法

以下に注意すべき点があります:

  • 共有されるデータの性質。

  • カスタムアクティビティの含有。

  • 特定のアクティビティタイプの除外。

共有は、共有するアイテムが渡されるUIActivityViewControllerのインスタンス化を通じて容易に行われます。これは、以下を呼び出すことで達成されます:

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

開発者は、UIActivityViewControllerを検討すべきです。初期化されたアクティビティやカスタムアクティビティ、および指定されたexcludedActivityTypesを確認する必要があります。

データの受信方法

データを受信する際に重要な点は次のとおりです:

  • カスタムドキュメントタイプの宣言。

  • アプリが開くことができるドキュメントタイプの指定。

  • 受信したデータの整合性の検証

ソースコードにアクセスできない場合でも、Info.plistを調査して、アプリが処理できるドキュメントの種類や宣言を理解するために、UTExportedTypeDeclarationsUTImportedTypeDeclarationsCFBundleDocumentTypesなどのキーを調べることができます。

これらのキーに関する簡潔なガイドは、Stackoverflowで利用可能であり、システム全体での認識やアプリとの統合のためにUTIを定義およびインポートする重要性を強調しています。

動的テストアプローチ

アクティビティの送信をテストするためには、次のことができます:

  • init(activityItems:applicationActivities:)メソッドにフックして、共有されるアイテムやアクティビティをキャプチャします。

  • excludedActivityTypesプロパティを傍受して、除外されたアクティビティを特定します。

アイテムの受信に関しては、次の手順が含まれます:

  • 他のソース(AirDrop、メールなど)からアプリにファイルを共有し、「開く」ダイアログを表示します。

  • 静的解析中に特定された他のメソッドと共にapplication:openURL:options:をフックして、アプリの応答を観察します。

  • アプリの堅牢性を評価するために、不正なファイルやファジング技術を使用します。

参考文献

Last updated