hacktricks/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md

95 lines
6.6 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
これは、[https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)に関連する情報の要約です。
2022-04-28 16:01:33 +00:00
## 基本情報
2021-05-21 16:38:18 +00:00
カスタムURLスキームは、アプリがカスタムプロトコルを使用して通信することを可能にします。詳細は[Apple Developer Documentation](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1)に記載されています。これらのスキームはアプリによって宣言され、アプリはそのスキームに従って受信したURLを処理します。すべてのURLパラメータを**検証し**、**不正なURLを破棄する**ことが重要です。このベクターを通じた攻撃を防ぐためです。
2021-05-21 16:38:18 +00:00
例として、URI `myapp://hostname?data=123876123`が特定のアプリケーションアクションを呼び出すことが示されています。注目すべき脆弱性は、Skype Mobileアプリにあり、`skype://`プロトコルを介して許可されていない通話アクションを可能にしました。登録されたスキームは、アプリの`Info.plist`の`CFBundleURLTypes`に見つけることができます。悪意のあるアプリケーションは、URIを再登録することで機密情報を傍受することができます。
2021-05-21 16:38:18 +00:00
### アプリケーションクエリスキームの登録
2021-05-21 16:38:18 +00:00
iOS 9.0以降、アプリが利用可能かどうかを確認するために、`canOpenURL:`は`Info.plist`の`LSApplicationQueriesSchemes`にURLスキームを宣言する必要があります。これにより、アプリがクエリできるスキームは50に制限され、アプリの列挙を防ぐことでプライバシーが向上します。
```xml
2021-05-21 16:38:18 +00:00
<key>LSApplicationQueriesSchemes</key>
2023-07-07 23:42:27 +00:00
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
2021-05-21 16:38:18 +00:00
```
### URL処理と検証のテスト
2021-05-21 16:38:18 +00:00
開発者は、`application:didFinishLaunchingWithOptions:`や`application:openURL:options:`など、URLパスの構築と検証を理解するためにソースコードの特定のメソッドを検査する必要があります。例えば、TelegramはURLを開くためにさまざまなメソッドを使用しています
2021-05-21 16:38:18 +00:00
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
2023-07-07 23:42:27 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
2023-07-07 23:42:27 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
2023-07-07 23:42:27 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
2023-07-07 23:42:27 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
```
### 他のアプリへのURLリクエストのテスト
2021-05-21 16:38:18 +00:00
`openURL:options:completionHandler:`のようなメソッドは、他のアプリと対話するためにURLを開くのに重要です。アプリのソースコード内でそのようなメソッドの使用を特定することは、外部通信を理解するための鍵です。
2021-05-21 16:38:18 +00:00
### 非推奨メソッドのテスト
2021-05-21 16:38:18 +00:00
`application:handleOpenURL:`や`openURL:`のようなURLオープニングを扱う非推奨メソッドは、特定してセキュリティへの影響をレビューする必要があります。
2021-05-21 16:38:18 +00:00
### URLスキームのファジング
2021-05-21 16:38:18 +00:00
URLスキームのファジングは、メモリ破損バグを特定できます。[Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/)のようなツールは、さまざまなペイロードでURLを開いてクラッシュを監視することで、このプロセスを自動化できます。これは、iGoat-SwiftアプリでのURLの操作によって例示されます
2021-05-21 16:38:18 +00:00
```bash
$ 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
```
## 参考文献
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricksをサポートする</summary>
2022-04-28 16:01:33 +00:00
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを送信してください。**
</details>
{% endhint %}