iOS UIActivity Sharing

Partage UIActivity iOS

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Partage UIActivity Simplifié

À partir d'iOS 6, les applications tierces peuvent partager des données telles que du texte, des URL ou des images en utilisant des mécanismes tels qu'AirDrop, comme décrit dans le guide de communication inter-applications d'Apple. Cette fonctionnalité se manifeste à travers une feuille d'activité de partage à l'échelle du système qui apparaît lors de l'interaction avec le bouton "Partager".

Une énumération complète de toutes les options de partage intégrées est disponible sur UIActivity.ActivityType. Les développeurs peuvent choisir d'exclure des options de partage spécifiques s'ils les jugent inadaptées pour leur application.

Comment Partager des Données

L'attention doit être portée sur :

  • La nature des données partagées.

  • L'inclusion d'activités personnalisées.

  • L'exclusion de certains types d'activités.

Le partage est facilité par l'instanciation d'un UIActivityViewController, auquel les éléments destinés au partage sont transmis. Cela est réalisé en appelant :

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Les développeurs doivent examiner l'UIActivityViewController pour les activités et les activités personnalisées avec lesquelles il est initialisé, ainsi que les excludedActivityTypes spécifiés.

Comment Recevoir des Données

Les aspects suivants sont cruciaux lors de la réception de données :

  • La déclaration des types de documents personnalisés.

  • La spécification des types de documents que l'application peut ouvrir.

  • La vérification de l'intégrité des données reçues.

Sans accès au code source, on peut toujours inspecter l'Info.plist pour des clés comme UTExportedTypeDeclarations, UTImportedTypeDeclarations, et CFBundleDocumentTypes pour comprendre les types de documents qu'une application peut gérer et déclarer.

Un guide succinct sur ces clés est disponible sur Stackoverflow, mettant en avant l'importance de définir et importer des UTIs pour une reconnaissance à l'échelle du système et associer les types de documents avec votre application pour une intégration dans le dialogue "Ouvrir avec".

Approche de Test Dynamique

Pour tester les activités d'envoi, on pourrait :

  • Accrocher la méthode init(activityItems:applicationActivities:) pour capturer les éléments et activités partagés.

  • Identifier les activités exclues en interceptant la propriété excludedActivityTypes.

Pour les éléments reçus, cela implique :

  • Partager un fichier avec l'application depuis une autre source (par exemple, AirDrop, email) qui déclenche le dialogue "Ouvrir avec...".

  • Accrocher application:openURL:options: parmi d'autres méthodes identifiées lors de l'analyse statique pour observer la réponse de l'application.

  • Utiliser des fichiers malformés ou des techniques de fuzzing pour évaluer la robustesse de l'application.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour