iOS UIActivity Sharing
Reading time: 4 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
UIActivity Sharing 简化
从 iOS 6 开始,第三方应用程序可以使用像 AirDrop 这样的机制共享数据,例如文本、URL 或图像,具体内容请参见苹果的 Inter-App Communication guide。此功能通过一个系统范围的 分享活动表 体现,当与“分享”按钮交互时会出现。
所有内置共享选项的全面列举可在 UIActivity.ActivityType 中找到。开发者可以选择排除特定的共享选项,如果他们认为这些选项不适合他们的应用程序。
如何共享数据
应关注以下几点:
- 共享数据的性质。
- 自定义活动的包含。
- 某些活动类型的排除。
共享是通过实例化 UIActivityViewController
来实现的,待共享的项目将被传递给它。这是通过调用实现的:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
开发者应仔细检查 UIActivityViewController
的活动和自定义活动,以及任何指定的 excludedActivityTypes
。
如何接收数据
接收数据时以下方面至关重要:
- 自定义文档类型的声明。
- 应用可以打开的文档类型的指定。
- 接收数据的完整性的验证。
在没有源代码访问的情况下,仍然可以检查 Info.plist
中的键,如 UTExportedTypeDeclarations
、UTImportedTypeDeclarations
和 CFBundleDocumentTypes
,以了解应用可以处理和声明的文档类型。
关于这些键的简明指南可在 Stackoverflow 上找到,强调了定义和导入 UTI 以便系统范围内识别的重要性,并将文档类型与您的应用关联,以便在“打开方式”对话框中集成。
动态测试方法
要测试 发送活动,可以:
- 钩住
init(activityItems:applicationActivities:)
方法以捕获正在共享的项目和活动。 - 通过拦截
excludedActivityTypes
属性来识别被排除的活动。
对于 接收项目,涉及:
- 从另一个来源(例如 AirDrop、电子邮件)与应用共享文件,提示“打开方式...”对话框。
- 钩住
application:openURL:options:
以及在静态分析中识别的其他方法,以观察应用的响应。 - 使用格式错误的文件或模糊测试技术来评估应用的稳健性。
参考
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。