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 开始,第三方应用程序可以通过像 AirDrop 这样的机制共享数据,例如文本、URL 或图像,具体内容请参见苹果的应用间通信指南。此功能通过一个系统范围的_共享活动表_体现,当与“共享”按钮交互时会出现。
所有内置共享选项的全面列举可在UIActivity.ActivityType中找到。开发者可以选择排除特定的共享选项,如果他们认为这些选项不适合他们的应用程序。
应关注以下几点:
共享数据的性质。
自定义活动的包含。
某些活动类型的排除。
共享是通过实例化 UIActivityViewController
来实现的,待共享的项目通过调用传递给它:
开发者应仔细检查 UIActivityViewController
的活动和初始化时的自定义活动,以及任何指定的 excludedActivityTypes
。
接收数据时以下方面至关重要:
自定义文档类型的声明。
应用可以打开的文档类型的指定。
接收数据的完整性的验证。
在没有源代码访问的情况下,仍然可以检查 Info.plist
中的键,如 UTExportedTypeDeclarations
、UTImportedTypeDeclarations
和 CFBundleDocumentTypes
,以了解应用可以处理和声明的文档类型。
关于这些键的简明指南可在 Stackoverflow 上找到,强调了定义和导入 UTI 以便系统范围内识别的重要性,并将文档类型与您的应用关联以便在“打开方式”对话框中集成。
要测试 发送活动,可以:
钩住 init(activityItems:applicationActivities:)
方法以捕获正在共享的项目和活动。
通过拦截 excludedActivityTypes
属性来识别被排除的活动。
对于 接收项目,涉及:
从其他来源(例如 AirDrop、电子邮件)与应用共享文件,提示“打开方式...”对话框。
钩住 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)