iOS UIActivity Sharing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
La atención debe dirigirse hacia:
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:
Los desarrolladores deben examinar el UIActivityViewController
por las actividades y actividades personalizadas con las que se inicializa, así como cualquier excludedActivityTypes
especificado.
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".
Para probar actividades de envío, se podría:
Engancharse al método init(activityItems:applicationActivities:)
para capturar los elementos y actividades que se están compartiendo.
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)