iOS UIActivity Sharing

Reading time: 3 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

UIActivity Sharing Simplified

Od iOS 6, aplikacje innych firm mogą dzielić dane takie jak tekst, URL-e lub obrazy, korzystając z mechanizmów takich jak AirDrop, jak opisano w przewodniku Apple'a Inter-App Communication guide. Ta funkcja manifestuje się poprzez systemowy arkusz aktywności udostępniania, który pojawia się po interakcji z przyciskiem "Udostępnij".

Kompleksowa lista wszystkich wbudowanych opcji udostępniania jest dostępna w UIActivity.ActivityType. Programiści mogą zdecydować się na wykluczenie określonych opcji udostępniania, jeśli uznają je za nieodpowiednie dla swojej aplikacji.

Jak udostępniać dane

Należy zwrócić uwagę na:

  • Charakter danych, które są udostępniane.
  • Włączenie niestandardowych aktywności.
  • Wykluczenie niektórych typów aktywności.

Udostępnianie jest ułatwione poprzez utworzenie UIActivityViewController, do którego przekazywane są elementy przeznaczone do udostępnienia. Osiąga się to poprzez wywołanie:

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

Programiści powinni dokładnie przeanalizować UIActivityViewController pod kątem aktywności i niestandardowych aktywności, z którymi jest inicjowany, a także wszelkich określonych excludedActivityTypes.

Jak Otrzymać Dane

Następujące aspekty są kluczowe przy odbieraniu danych:

  • Deklaracja niestandardowych typów dokumentów.
  • Określenie typów dokumentów, które aplikacja może otworzyć.
  • Weryfikacja integralności otrzymanych danych.

Bez dostępu do kodu źródłowego, można nadal sprawdzić Info.plist pod kątem kluczy takich jak UTExportedTypeDeclarations, UTImportedTypeDeclarations i CFBundleDocumentTypes, aby zrozumieć, jakie typy dokumentów aplikacja może obsługiwać i deklarować.

Zwięzły przewodnik po tych kluczach jest dostępny na Stackoverflow, podkreślając znaczenie definiowania i importowania UTI dla systemowego rozpoznawania oraz kojarzenia typów dokumentów z Twoją aplikacją w celu integracji w dialogu "Otwórz za pomocą".

Podejście do Testowania Dynamicznego

Aby przetestować wysyłanie aktywności, można:

  • Podłączyć się do metody init(activityItems:applicationActivities:), aby przechwycić elementy i aktywności, które są udostępniane.
  • Zidentyfikować wykluczone aktywności, przechwytując właściwość excludedActivityTypes.

W przypadku otrzymywania elementów, polega to na:

  • Udostępnieniu pliku aplikacji z innego źródła (np. AirDrop, e-mail), co wywołuje dialog "Otwórz za pomocą...".
  • Podłączeniu application:openURL:options: wśród innych metod zidentyfikowanych podczas analizy statycznej, aby obserwować reakcję aplikacji.
  • Wykorzystaniu źle sformatowanych plików lub technik fuzzingowych do oceny odporności aplikacji.

Odniesienia

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks