iOS UIActivity Sharing
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (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)