2024-07-29 11:05:00 +00:00
# iOS Custom URI Handlers / Deeplinks / Custom Schemes
2024-07-19 05:24:40 +00:00
{% hint style="success" %}
2024-07-29 11:05:00 +00:00
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
2024-07-19 05:24:40 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 05:24:40 +00:00
< summary > Support HackTricks< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 05:24:40 +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 >
2024-07-19 05:24:40 +00:00
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-07-29 11:05:00 +00:00
## Basic Information
2021-05-21 16:38:18 +00:00
2024-07-29 11:05:00 +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 ) рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрди рд╕реНрдХреАрдореЛрдВ рдХреЛ рдРрдк рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдлрд┐рд░ рдЙрди рд╕реНрдХреАрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдЖрдиреЗ рд╡рд╛рд▓реЗ URLs рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рд╕рднреА URL рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ **рдорд╛рдиреНрдп рдХрд░рдирд╛** рдФрд░ **рдХреЛрдИ рднреА рдЧрд▓рдд URL рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛** рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред
2021-05-21 16:38:18 +00:00
2024-07-19 05:24:40 +00:00
рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ URI `myapp://hostname?data=123876123` рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЬреНрдЮрд╛рдд рднреЗрджреНрдпрддрд╛ Skype Mobile рдРрдк рдореЗрдВ рдереА, рдЬрд┐рд╕рдиреЗ `skype://` рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирдзрд┐рдХреГрдд рдХреЙрд▓ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдкрдВрдЬреАрдХреГрдд рд╕реНрдХреАрдореЛрдВ рдХреЛ рдРрдк рдХреЗ `Info.plist` рдореЗрдВ `CFBundleURLTypes` рдХреЗ рддрд╣рдд рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдкреНрд╕ рдЗрд╕рдХреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП URIs рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдХреЗ рд╢реЛрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2021-05-21 16:38:18 +00:00
2024-07-29 11:05:00 +00:00
### Application Query Schemes Registration
2021-05-21 16:38:18 +00:00
2024-07-19 05:24:40 +00:00
iOS 9.0 рд╕реЗ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдРрдк рдЙрдкрд▓рдмреНрдз рд╣реИ, `canOpenURL:` рдХреЛ `Info.plist` рдореЗрдВ `LSApplicationQueriesSchemes` рдХреЗ рддрд╣рдд URL рд╕реНрдХреАрдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдПрдХ рдРрдк рджреНрд╡рд╛рд░рд╛ рдХреНрд╡реЗрд░реА рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреАрдореЛрдВ рдХреЛ 50 рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк enumeration рдХреЛ рд░реЛрдХрдХрд░ рдЧреЛрдкрдиреАрдпрддрд╛ рдмрдврд╝рддреА рд╣реИред
2024-02-08 07:28:54 +00:00
```xml
2021-05-21 16:38:18 +00:00
< key > LSApplicationQueriesSchemes< / key >
2023-11-06 08:38:02 +00:00
< array >
< string > url_scheme1< / string >
< string > url_scheme2< / string >
< / array >
2021-05-21 16:38:18 +00:00
```
2024-07-19 05:24:40 +00:00
### Testing URL Handling and Validation
2021-05-21 16:38:18 +00:00
2024-07-19 05:24:40 +00:00
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ URL рдкрде рдирд┐рд░реНрдорд╛рдг рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ `application:didFinishLaunchingWithOptions:` рдФрд░ `application:openURL:options:` ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Telegram URL рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
2021-05-21 16:38:18 +00:00
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
2023-11-06 08:38:02 +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-11-06 08:38:02 +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-11-06 08:38:02 +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-11-06 08:38:02 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
```
2024-02-08 07:28:54 +00:00
### рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП URL рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
2021-05-21 16:38:18 +00:00
2024-07-19 05:24:40 +00:00
`openURL:options:completionHandler:` рдЬреИрд╕реЗ рддрд░реАрдХреЗ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП URLs рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдРрдк рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рдЪрд╛рдирдирд╛ рдмрд╛рд╣рд░реА рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рд╣реИред
### рдЕрдкреНрд░рдЪрд▓рд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
URL рдЦреЛрд▓рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдкреНрд░рдЪрд▓рд┐рдд рддрд░реАрдХреЗ, рдЬреИрд╕реЗ `application:handleOpenURL:` рдФрд░ `openURL:` , рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрдереЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
2021-05-21 16:38:18 +00:00
2024-07-29 11:05:00 +00:00
### URL рд╕реНрдХреАрдореЛрдВ рдХрд╛ рдлрдЬрд╝рд┐рдВрдЧ
2024-07-19 05:24:40 +00:00
2024-07-29 11:05:00 +00:00
URL рд╕реНрдХреАрдореЛрдВ рдХрд╛ рдлрдЬрд╝рд┐рдВрдЧ рдореЗрдореЛрд░реА рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдмрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред [Frida ](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/ ) рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде URLs рдЦреЛрд▓рдХрд░ рдХреНрд░реИрд╢ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ iGoat-Swift рдРрдк рдореЗрдВ URLs рдХреЗ рд╣реЗрд░рдлреЗрд░ рджреНрд╡рд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
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
```
2024-07-29 11:05:00 +00:00
## рдХрд╕реНрдЯрдо рдпреВрдЖрд░рдПрд▓ рд╕реНрдХреАрдо рд╣рд╛рдЗрдЬреИрдХрд┐рдВрдЧ
[**рдЗрд╕ рдкреЛрд╕реНрдЯ** ](https://evanconnelly.github.io/post/ios-oauth/ ) рдХреЗ рдЕрдиреБрд╕рд╛рд░, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдкреНрд╕ **рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рдХрд╕реНрдЯрдо рд╕реНрдХреАрдореНрд╕ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,** рдлрд┐рд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Safari рдРрдк рдХреЗ рд╕рднреА рдХреБрдХреАрдЬрд╝ рд╣реЛрддреЗ рд╣реИрдВ [ASWebAuthenticationSession ](https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession/2990952-init#parameters ) рдХреЗ рд╕рд╛рдеред 
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡реЗрдм рдкреГрд╖реНрда рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ TCC рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЙрд╕ рдРрдк рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрддрд╛ рд╣реИред рдлрд┐рд░, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╡реЗрдмрдкреГрд╖реНрда рдПрдХ рдкреАрдбрд╝рд┐рдд рдкреГрд╖реНрда рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, `prompt=none` рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ OAuth рдкреНрд░рд╡рд╛рд╣ред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА OAuth рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдерд╛, рддреЛ OAuth рдкреНрд░рд╡рд╛рд╣ рдкреАрдбрд╝рд┐рдд рдРрдк рдХреЛ рдХрд╕реНрдЯрдо рд╕реНрдХреАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрдЧрд╛ред\
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк рдиреЗ рдЗрд╕реЗ рднреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк рдХреЗ рдЕрдВрджрд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реНрдХреАрдо рдХреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ OAuth рдЯреЛрдХрди рдЪреБрд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
2024-02-08 07:28:54 +00:00
## рд╕рдВрджрд░реНрдн
2024-07-29 11:05:00 +00:00
2024-02-08 07:28:54 +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/ )
2024-07-29 11:05:00 +00:00
* [https://evanconnelly.github.io/post/ios-oauth/ ](https://evanconnelly.github.io/post/ios-oauth/ )
2022-04-28 16:01:33 +00:00
2024-07-19 05:24:40 +00:00
{% hint style="success" %}
2024-07-29 11:05:00 +00:00
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
2024-07-19 05:24:40 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-29 11:05:00 +00:00
< summary > Support HackTricks< / summary >
2022-04-28 16:01:33 +00:00
2024-07-29 11:05:00 +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 >
2024-07-19 05:24:40 +00:00
{% endhint %}