5.5 KiB
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群组 或 电报群组 或 关注我的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
这是来自https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/相关信息的摘要。
基本信息
自定义URL schemes使应用程序能够使用自定义协议进行通信,详细信息请参阅Apple开发人员文档。这些方案必须由应用程序声明,然后处理遵循这些方案的传入URL。验证所有URL参数并丢弃任何格式错误的URL是至关重要的,以防止通过此向量进行攻击。
举例说明,URI myapp://hostname?data=123876123
调用特定应用程序操作。一个已知的漏洞出现在Skype移动应用程序中,允许通过skype://
协议执行未经许可的呼叫操作。注册的方案可以在应用程序的Info.plist
中的CFBundleURLTypes
下找到。恶意应用程序可以通过重新注册URI来拦截敏感信息来利用这一点。
应用程序查询方案注册
从iOS 9.0开始,要检查应用程序是否可用,canOpenURL:
需要在Info.plist
中的LSApplicationQueriesSchemes
下声明URL schemes。这限制了应用程序可以查询的方案为50个,通过阻止应用程序枚举来增强隐私。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
测试URL处理和验证
开发人员应检查源代码中的特定方法,以了解URL路径的构建和验证,例如 application:didFinishLaunchingWithOptions:
和 application:openURL:options:
。例如,Telegram 使用各种方法来打开URL:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
return true
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
self.openUrl(url: url)
return true
}
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
self.openUrl(url: url)
return true
}
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
self.openUrl(url: url)
return true
}
测试向其他应用程序发送URL请求
诸如 openURL:options:completionHandler:
这样的方法对于打开URL以与其他应用程序交互至关重要。识别应用程序源代码中对这些方法的使用对于理解外部通信至关重要。
测试已弃用的方法
应该识别处理URL打开的已弃用方法,例如 application:handleOpenURL:
和 openURL:
,并就安全影响进行审查。
对URL Scheme 进行模糊测试
对URL Scheme 进行模糊测试可以识别内存损坏漏洞。像Frida这样的工具可以通过使用不同有效负载打开URL来监视崩溃,例如在 iGoat-Swift 应用程序中操纵URL。
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
Watching for crashes from iGoat...
No logs were moved.
Opened URL: iGoat://?contactNumber=0&message=0
参考资料
从零开始学习AWS黑客技术 htARTE (HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中被广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我的Twitter 🐦 @carlospolopm.
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。