iOS UIActivity Sharing

Compartir UIActivity de iOS

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Compartir UIActivity Simplificado

Desde iOS 6 en adelante, las aplicaciones de terceros pueden compartir datos como texto, URLs o imágenes utilizando mecanismos como AirDrop, como se describe 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 exhaustiva 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 inadecuadas para su aplicación.

Cómo Compartir Datos

La atención debe dirigirse a:

  • La naturaleza de los datos que se comparten.

  • La inclusión de actividades personalizadas.

  • La exclusión de ciertos tipos de actividades.

El compartir se facilita mediante la instanciación de un UIActivityViewController, al cual se le pasan los elementos destinados a compartir. Esto se logra llamando a:

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

Los desarrolladores deben examinar el UIActivityViewController para 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 documento personalizados.

  • La especificación de tipos de documento 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 comprender los tipos de documentos que una aplicación puede manejar y declarar.

Una guía concisa sobre estas claves está disponible en Stackoverflow, resaltando 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 prueba dinámica

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

  • Engancharse en el método init(activityItems:applicationActivities:) para capturar los elementos y actividades compartidos.

  • 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

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización