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

93 lines
6.1 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 02:07:06 +00:00
Hierdie is 'n opsomming van die verwante inligting vanaf [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
## Basiese Inligting
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Aangepaste URL-skemas stel programme in staat om te kommunikeer deur middel van 'n aangepaste protokol, soos beskryf in die [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). Hierdie skemas moet deur die toepassing verklaar word, wat dan inkomende URL's volgens daardie skemas hanteer. Dit is noodsaaklik om **alle URL-parameters te valideer** en **enige verkeerd geformuleerde URL's te verwerp** om aanvalle deur hierdie vektor te voorkom.
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
'n Voorbeeld word gegee waar die URI `myapp://hostname?data=123876123` 'n spesifieke toepassingsaksie aanroep. 'n Opmerklike kwesbaarheid was in die Skype Mobile-toep, wat ongemagtigde oproepaksies via die `skype://`-protokol toegelaat het. Die geregistreerde skemas kan gevind word in die toep se `Info.plist` onder `CFBundleURLTypes`. Kwaadwillige toepassings kan hiervan misbruik maak deur URI's te herregistreer om sensitiewe inligting te onderskep.
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
### Registrasie van Toepassingsnavraagskemas
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Vanaf iOS 9.0, om te kontroleer of 'n toepassing beskikbaar is, vereis `canOpenURL:` dat URL-skemas verklaar word in die `Info.plist` onder `LSApplicationQueriesSchemes`. Dit beperk die skemas wat 'n toepassing kan ondersoek tot 50, wat privaatheid verbeter deur toepassingsopnoeming te voorkom.
2024-02-08 03:08:28 +00:00
```xml
<key>LSApplicationQueriesSchemes</key>
2021-05-21 16:38:18 +00:00
<array>
2024-02-11 02:07:06 +00:00
<string>url_scheme1</string>
<string>url_scheme2</string>
2021-05-21 16:38:18 +00:00
</array>
```
2024-02-11 02:07:06 +00:00
### Toetsing van URL-hantering en validering
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Ontwikkelaars moet spesifieke metodes in die bronkode ondersoek om URL-padkonstruksie en validering te verstaan, soos `application:didFinishLaunchingWithOptions:` en `application:openURL:options:`. Byvoorbeeld, Telegram maak gebruik van verskeie metodes om URL's te open:
2021-05-21 16:38:18 +00:00
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
2024-02-11 02:07:06 +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 {
2024-02-11 02:07:06 +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 {
2024-02-11 02:07:06 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
2024-02-11 02:07:06 +00:00
self.openUrl(url: url)
return true
2021-05-21 16:38:18 +00:00
}
```
2024-02-11 02:07:06 +00:00
### Toetsing van URL-aanvragen aan andere apps
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Metodes soos `openURL:options:completionHandler:` is noodsaaklik vir die oopmaak van URL's om met ander apps te kommunikeer. Die identifisering van die gebruik van sulke metodes in die bronkode van die app is sleutel tot die verstaan van eksterne kommunikasie.
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
### Toetsing vir verouderde metodes
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Verouderde metodes wat URL-oopmakings hanteer, soos `application:handleOpenURL:` en `openURL:`, moet geïdentifiseer en nagegaan word vir sekuriteitsimplikasies.
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
### Fuzzing van URL-skemas
2021-05-21 16:38:18 +00:00
2024-02-11 02:07:06 +00:00
Fuzzing van URL-skemas kan geheueversteuringsfoute identifiseer. Hulpmiddels soos [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) kan hierdie proses outomatiseer deur URL's met verskillende ladinge oop te maak om te monitor vir ongelukke, soos geïllustreer deur die manipulasie van URL's in die iGoat-Swift-app:
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-02-11 02:07:06 +00:00
## Verwysings
2024-02-08 03:08:28 +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
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
2022-04-28 16:01:33 +00:00
</details>