iOS UIActivity Sharing

iOS UIActivity Sharing

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

UIActivity Sharing Simplified

从iOS 6开始,第三方应用程序可以使用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上找到,强调了定义和导入UTIs以供系统广泛识别,并将文档类型与您的应用程序关联以在“打开方式”对话框中集成的重要性。

动态测试方法

要测试发送活动,可以:

  • 钩入init(activityItems:applicationActivities:)方法以捕获正在共享的项目和活动。

  • 通过拦截excludedActivityTypes属性来识别排除的活动。

对于接收项目,涉及:

  • 从其他来源(例如AirDrop,电子邮件)与应用程序共享文件,以触发“打开方式...”对话框。

  • 钩入application:openURL:options:等在静态分析期间识别的其他方法,以观察应用程序的响应。

  • 使用格式错误的文件或模糊技术来评估应用程序的健壮性。

参考资料

最后更新于