Deeplinks/Universal links vulns (iOS)

L'exploitation des deeplinks sous iOS est globalement semblable à l'exploitation des deeplinks sous Android.

Reconnaissance

Statique

Les Universal links utilisés par les applications iOS peuvent être retrouvées dans le fichier Info.plist en recherchant les éléments suivants:

  • CFBundleUrlTypes

  • LSApplicationQueriesSchemes

Ainsi que dans les entitlements en recherchant les domaines associés:

$ ipsw macho info -e MY_BINARY

key: com.apple.developper.associated-domains

Rechercher ensuite des cas d'usage:

$ string MY_BINARY | grep "://"

$ strings MY_BINARY | grep -E '^[a-zA-Z][a-zA-Z0-9+.-]{0,29}://[a-zA-Z0-9./?&=_%-]+' | grep -vE '^https?://'

Rechercher la méthode openURL Dans le binaire Mach-O avec Ghidra (Barre "Filter" dans la fenêtre "Symbol Tree")

Rechercher des strings hardcodées potentiellement associés aux fonctions qui ouvrent des liens universels pour aider à la compréhension (Search > For strings...)

Dynamique

Tracer la méthode openURL avec Frida:

$ frida-trace -U -m "*[* *openURL*]" -p [ProcessID]

Exploitation

Lancer un lien universel via SSH:

$ uiopen scheme://target_app

Mis à jour