hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md

5.8 KiB

Compartilhamento de UIActivity iOS

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Compartilhamento de UIActivity Simplificado

A partir do iOS 6, aplicativos de terceiros foram habilitados para compartilhar dados como texto, URLs ou imagens usando mecanismos como AirDrop, conforme descrito no guia de Comunicação entre Apps da Apple. Essa funcionalidade se manifesta por meio de uma folha de atividades 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 as considerarem inadequadas para seu aplicativo.

Como Compartilhar Dados

A atenção deve ser direcionada para:

  • A natureza dos dados compartilhados.
  • A inclusão de atividades personalizadas.
  • A exclusão de certos tipos de atividades.

O compartilhamento é facilitado por meio da instanciação de um UIActivityViewController, para o 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:

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 documento personalizados.
  • A especificação dos tipos de documento 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 na caixa de 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 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 a caixa de 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.
  • Utilizar arquivos malformados ou técnicas de fuzzing para avaliar a robustez do aplicativo.

Referências

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: