iOS UIActivity Sharing
Reading time: 3 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
UIActivity Sharing Simplifié
Depuis iOS 6, les applications tierces peuvent partager des données telles que du texte, des URL ou des images en utilisant des mécanismes comme AirDrop, comme décrit dans le guide de communication inter-applications d'Apple. Cette fonctionnalité se manifeste par 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 à UIActivity.ActivityType. Les développeurs peuvent choisir d'exclure certaines options de partage s'ils les jugent inapproprié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 passés. 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 le UIActivityViewController
pour les activités et les activités personnalisées avec lesquelles il est initialisé, ainsi que pour tout excludedActivityTypes
spécifié.
Comment Recevoir des Données
Les aspects suivants sont cruciaux lors de la réception de données :
- La déclaration de 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 le Info.plist
pour des clés comme UTExportedTypeDeclarations
, UTImportedTypeDeclarations
, et CFBundleDocumentTypes
afin de 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, soulignant l'importance de définir et d'importer des UTI pour une reconnaissance à l'échelle du système et d'associer des types de documents avec votre application pour l'intégration dans la boîte de dialogue "Ouvrir avec".
Approche de Test Dynamique
Pour tester l'envoi d'activités, on pourrait :
- S'accrocher à la méthode
init(activityItems:applicationActivities:)
pour capturer les éléments et les activités partagés. - Identifier les activités exclues en interceptant la propriété
excludedActivityTypes
.
Pour recevoir des éléments, cela implique :
- Partager un fichier avec l'application depuis une autre source (par exemple, AirDrop, email) qui invite à la boîte de dialogue "Ouvrir avec...".
- S'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
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.