hacktricks/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md
2024-02-10 13:03:23 +00:00

92 lines
6.1 KiB
Markdown

<details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
Questa è una sintesi delle informazioni correlate da [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
## Informazioni di base
I custom URL schemes consentono alle app di comunicare utilizzando un protocollo personalizzato, come descritto nella [Documentazione per sviluppatori Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Questi schemi devono essere dichiarati dall'app, che gestisce quindi gli URL in ingresso seguendo tali schemi. È fondamentale **validare tutti i parametri URL** e **scartare eventuali URL non validi** per prevenire attacchi attraverso questo vettore.
Viene fornito un esempio in cui l'URI `myapp://hostname?data=123876123` invoca una specifica azione dell'applicazione. È stata riscontrata una vulnerabilità nell'app Skype Mobile, che consentiva azioni di chiamata non autorizzate tramite il protocollo `skype://`. Gli schemi registrati possono essere trovati nell'`Info.plist` dell'app sotto `CFBundleURLTypes`. Le applicazioni malevole possono sfruttare ciò registrando nuovamente gli URI per intercettare informazioni sensibili.
### Registrazione degli Application Query Schemes
A partire da iOS 9.0, per verificare se un'app è disponibile, `canOpenURL:` richiede la dichiarazione degli URL schemes nell'`Info.plist` sotto `LSApplicationQueriesSchemes`. Ciò limita gli schemi che un'app può interrogare a 50, migliorando la privacy impedendo l'enumerazione delle app.
```xml
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
```
### Testare la gestione e la validazione degli URL
Gli sviluppatori dovrebbero ispezionare metodi specifici nel codice sorgente per comprendere la costruzione e la validazione del percorso dell'URL, come `application:didFinishLaunchingWithOptions:` e `application:openURL:options:`. Ad esempio, Telegram utilizza vari metodi per aprire gli URL:
```swift
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
}
```
### Test delle richieste URL verso altre app
Metodi come `openURL:options:completionHandler:` sono fondamentali per aprire URL e interagire con altre app. Identificare l'uso di tali metodi nel codice sorgente dell'app è essenziale per comprendere le comunicazioni esterne.
### Test dei metodi deprecati
I metodi deprecati che gestiscono l'apertura degli URL, come `application:handleOpenURL:` e `openURL:`, devono essere identificati e valutati per le implicazioni sulla sicurezza.
### Fuzzing degli URL Scheme
Il fuzzing degli URL Scheme può identificare bug di corruzione della memoria. Strumenti come [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) possono automatizzare questo processo aprendo URL con payload variabili per monitorare eventuali crash, come esemplificato dalla manipolazione degli URL nell'app iGoat-Swift:
```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
```
## Riferimenti
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
<details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
</details>