mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
8.8 KiB
8.8 KiB
从零到英雄学习AWS黑客攻击技巧 htARTE (HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。**
UIActivity分享
从iOS 6开始,第三方应用可以通过特定机制例如AirDrop 分享数据(项目)。从用户的角度来看,这个功能是众所周知的系统级别的_分享活动表_,在点击“分享”按钮后出现。
完整的内置分享机制列表可以在UIActivity.ActivityType中找到。如果认为这些分享机制不适合应用,开发者可以选择排除一些分享机制。
发送项目
在测试UIActivity
分享时,您应该特别注意:
- 被分享的数据(项目),
- 自定义活动,
- 被排除的活动类型。
通过UIActivity
分享数据的工作原理是创建一个UIActivityViewController
并传递所需的项目(URLs, 文本, 图片)到init(activityItems:applicationActivities:)
。
如果有源代码,您应该查看UIActivityViewController
:
- 检查传递给
init(activityItems:applicationActivities:)
方法的活动。 - 检查是否定义了自定义活动(也传递给前面的方法)。
- 验证
excludedActivityTypes
,如果有的话。
如果您只有编译/安装的应用,请尝试搜索前面的方法和属性,例如:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
接收项目
在接收项目时,您应该检查:
- 应用程序是否通过查看 Exported/Imported UTIs(Xcode 项目的 "Info" 标签)声明自定义文档类型。所有系统声明的 UTIs(统一类型标识符)列表可以在存档的 Apple 开发者文档中找到。
- 应用程序是否通过查看 Document Types(Xcode 项目的 "Info" 标签)指定了它可以打开的_文档类型_。如果存在,它们由名称和一个或多个代表数据类型的 UTIs 组成(例如,"public.png" 用于 PNG 文件)。iOS 使用此信息来确定应用程序是否有资格打开给定的文档(仅指定 Exported/Imported UTIs 是不够的)。
- 应用程序是否通过查看应用程序委托中的
application:openURL:options:
(或其已弃用的版本UIApplicationDelegate application:openURL:sourceApplication:annotation:
)正确验证接收到的数据。
如果没有源代码,您仍然可以查看 Info.plist
文件并搜索:
UTExportedTypeDeclarations
/UTImportedTypeDeclarations
,如果应用程序声明了导出/导入的_自定义文档类型_。CFBundleDocumentTypes
,查看应用程序是否指定了它可以打开的_文档类型_。
关于这些键的使用的非常完整的解释可以在 Stackoverflow 上找到,但这里有一个总结:
UTExportedTypeDeclarations
:使用它们来定义您的应用程序希望教给系统的您自己的 UTIs。UTI 描述了一段数据(不一定是位于文件内的数据!),至少需要一个标识符(com.example.MyCoolDataType
)。此外,它可能有一个名称(My Cool Data Type
),一个或多个文件名扩展名(.myCoolDataType
),一个或多个MIME 类型(x-application/my-cool-data-type
),一个或多个剪贴板 类型(在使用复制&粘贴传输该类数据时使用),以及一个或多个传统操作系统类型。通常,您还希望 UTIs 遵循现有的 UTIs(例如,当您说您的 UTI 遵循public.data
时,任何可以处理通用数据的进程也可以处理您的 UTI)。- 例如:您定义了自己的专有文件数据格式,并希望其他应用程序、插件、扩展等也知道这种数据格式。
UTImportedTypeDeclarations
:您使用UTImportedTypeDeclarations
来教给系统您希望在系统中已知但不是您的 UTIs。- 例如:您的应用程序能够读取另一个应用程序的专有数据格式,但您不知道该应用程序是否甚至安装在系统上。
CFBundleDocumentTypes
:您使用CFBundleDocumentTypes
来告诉系统您的应用程序能够打开哪些文档类型。除非您还在这里列出您的 UTIs,否则这些 UTIs 不会与您的应用程序关联在 Finder 中,您的应用程序不会出现在Open With >
菜单中。
您必须为文档类型设置的唯一事情是角色。角色可以是“Viewer”(您可以显示该文件类型,但不能编辑它),“Editor”(您可以显示和编辑该文件类型),“None”(未指定您可以对该文件做什么)。- 例如:您希望您的应用程序与某些文件类型关联,无论是通过扩展名、MIME 类型还是 UTI 标识符来识别。如果您希望您的应用程序与 UTI 类型关联,应用程序应该导入或导出该类型,否则该类型可能不为系统所知,注册未知 UTI 类型根本没有效果。
动态测试
对于发送活动,您可以:
- Hook 我们在静态分析中看到的方法(
init(activityItems:applicationActivities:)
)以获取activityItems
和applicationActivities
。 - 通过 Hook
excludedActivityTypes
属性找出被排除的活动。
对于接收项目,您可以:
- 通过另一个应用程序与该应用程序_分享_文件,或通过 AirDrop 或电子邮件发送。选择文件以触发“打开方式...”对话框(即,没有默认应用程序会打开该文件,例如 PDF)。
- Hook
application:openURL:options:
和之前静态分析中识别的任何其他方法。 - 观察应用程序行为。
- 此外,您可以发送特定的畸形文件和/或使用模糊测试技术。
阅读如何 在这里。
从零到英雄学习 AWS 黑客攻击,使用 htARTE (HackTricks AWS Red Team Expert)!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
- 获取官方 PEASS & HackTricks 商品
- 发现PEASS 家族,我们独家的 NFT 集合
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。