iOS UIActivity Sharing

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

UIActivity Sharing Simplificado

Desde iOS 6 en adelante, las aplicaciones de terceros han podido compartir datos como texto, URLs o im谩genes utilizando mecanismos como AirDrop, como se detalla en la gu铆a de Comunicaci贸n entre Aplicaciones de Apple. Esta funci贸n se manifiesta a trav茅s de una hoja de actividad de compartir a nivel del sistema que aparece al interactuar con el bot贸n "Compartir".

Una enumeraci贸n completa de todas las opciones de compartir integradas est谩 disponible en UIActivity.ActivityType. Los desarrolladores pueden optar por excluir opciones de compartir espec铆ficas si las consideran inapropiadas para su aplicaci贸n.

C贸mo Compartir Datos

Se debe prestar atenci贸n a:

  • La naturaleza de los datos que se comparten.
  • La inclusi贸n de actividades personalizadas.
  • La exclusi贸n de ciertos tipos de actividad.

El compartir se facilita a trav茅s de la instanciaci贸n de un UIActivityViewController, al cual se pasan los elementos destinados a compartir. Esto se logra llamando:

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

Los desarrolladores deben examinar el UIActivityViewController por las actividades y actividades personalizadas con las que se inicializa, as铆 como cualquier excludedActivityTypes especificado.

C贸mo Recibir Datos

Los siguientes aspectos son cruciales al recibir datos:

  • La declaraci贸n de tipos de documentos personalizados.
  • La especificaci贸n de tipos de documentos que la aplicaci贸n puede abrir.
  • La verificaci贸n de la integridad de los datos recibidos.

Sin acceso al c贸digo fuente, a煤n se puede inspeccionar el Info.plist en busca de claves como UTExportedTypeDeclarations, UTImportedTypeDeclarations y CFBundleDocumentTypes para entender los tipos de documentos que una aplicaci贸n puede manejar y declarar.

Una gu铆a concisa sobre estas claves est谩 disponible en Stackoverflow, destacando la importancia de definir e importar UTIs para el reconocimiento a nivel del sistema y asociar tipos de documentos con su aplicaci贸n para la integraci贸n en el di谩logo "Abrir con".

Enfoque de Pruebas Din谩micas

Para probar actividades de env铆o, se podr铆a:

  • Engancharse al m茅todo init(activityItems:applicationActivities:) para capturar los elementos y actividades que se comparten.
  • Identificar actividades excluidas interceptando la propiedad excludedActivityTypes.

Para recibir elementos, implica:

  • Compartir un archivo con la aplicaci贸n desde otra fuente (por ejemplo, AirDrop, correo electr贸nico) que solicite el di谩logo "Abrir con...".
  • Enganchar application:openURL:options: entre otros m茅todos identificados durante el an谩lisis est谩tico para observar la respuesta de la aplicaci贸n.
  • Emplear archivos malformados o t茅cnicas de fuzzing para evaluar la robustez de la aplicaci贸n.

Referencias

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks