iOS UIActivity Sharing
Reading time: 3 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
UIActivity Sharing Simplificado
A partir do iOS 6, aplicativos de terceiros foram habilitados a compartilhar dados como texto, URLs ou imagens usando mecanismos como AirDrop, conforme descrito no guia de Comunicação entre Aplicativos da Apple. Este recurso se manifesta através de uma folha de atividade de compartilhamento em todo o sistema que aparece ao interagir com o botão "Compartilhar".
Uma enumeração abrangente de todas as opções de compartilhamento integradas está disponível em UIActivity.ActivityType. Os desenvolvedores podem optar por excluir opções de compartilhamento específicas se considerarem inadequadas para seu aplicativo.
Como Compartilhar Dados
A atenção deve ser direcionada para:
- A natureza dos dados sendo compartilhados.
- A inclusão de atividades personalizadas.
- A exclusão de certos tipos de atividades.
O compartilhamento é facilitado através da instância de um UIActivityViewController
, ao qual os itens destinados ao compartilhamento são passados. Isso é alcançado chamando:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
Os desenvolvedores devem examinar o UIActivityViewController
para as atividades e atividades personalizadas com as quais ele é inicializado, bem como quaisquer excludedActivityTypes
especificados.
Como Receber Dados
Os seguintes aspectos são cruciais ao receber dados:
- A declaração de tipos de documentos personalizados.
- A especificação de tipos de documentos que o aplicativo pode abrir.
- A verificação da integridade dos dados recebidos.
Sem acesso ao código-fonte, ainda é possível inspecionar o Info.plist
em busca de chaves como UTExportedTypeDeclarations
, UTImportedTypeDeclarations
e CFBundleDocumentTypes
para entender os tipos de documentos que um aplicativo pode manipular e declarar.
Um guia sucinto sobre essas chaves está disponível no Stackoverflow, destacando a importância de definir e importar UTIs para reconhecimento em todo o sistema e associar tipos de documentos ao seu aplicativo para integração no diálogo "Abrir com".
Abordagem de Teste Dinâmico
Para testar atividades de envio, pode-se:
- Conectar-se ao método
init(activityItems:applicationActivities:)
para capturar os itens e atividades que estão sendo compartilhados. - Identificar atividades excluídas interceptando a propriedade
excludedActivityTypes
.
Para receber itens, envolve:
- Compartilhar um arquivo com o aplicativo de outra fonte (por exemplo, AirDrop, e-mail) que solicita o diálogo "Abrir com...".
- Conectar
application:openURL:options:
entre outros métodos identificados durante a análise estática para observar a resposta do aplicativo. - Empregar arquivos malformados ou técnicas de fuzzing para avaliar a robustez do aplicativo.
Referências
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.