hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md
2024-02-11 01:46:25 +00:00

5.9 KiB

Udostępnianie UIActivity w systemie iOS

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Proste udostępnianie UIActivity

Od wersji iOS 6 aplikacje innych firm mogą udostępniać dane, takie jak tekst, adresy URL lub obrazy, za pomocą mechanizmów takich jak AirDrop, jak opisano w przewodniku dotyczącym komunikacji między aplikacjami firmy Apple. Ta funkcja manifestuje się poprzez ogólnodostępne okno aktywności udostępniania, które pojawia się po interakcji z przyciskiem "Udostępnij".

Pełne wyliczenie wszystkich wbudowanych opcji udostępniania jest dostępne pod adresem UIActivity.ActivityType. Deweloperzy mogą zdecydować się wykluczyć określone opcje udostępniania, jeśli uważają je za nieodpowiednie dla swojej aplikacji.

Jak udostępnić dane

Należy zwrócić uwagę na:

  • Charakter udostępnianych danych.
  • Dodanie niestandardowych aktywności.
  • Wykluczenie określonych typów aktywności.

Udostępnianie jest ułatwione poprzez utworzenie instancji UIActivityViewController, do której przekazywane są elementy przeznaczone do udostępnienia. Można to osiągnąć, wywołując:

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

Deweloperzy powinni dokładnie przeanalizować UIActivityViewController w celu sprawdzenia aktywności i niestandardowych aktywności, z którymi jest zainicjowany, oraz wszelkich określonych excludedActivityTypes.

Jak otrzymać dane

Następujące aspekty są kluczowe podczas odbierania 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ć plik Info.plist pod kątem kluczy takich jak UTExportedTypeDeclarations, UTImportedTypeDeclarations i CFBundleDocumentTypes, aby zrozumieć rodzaje dokumentów, które aplikacja może obsługiwać i deklarować.

Zwięzły przewodnik dotyczący tych kluczy jest dostępny na Stackoverflow, podkreślając znaczenie definiowania i importowania UTI dla rozpoznawania na poziomie systemu oraz łączenia typów dokumentów z aplikacją w dialogu "Otwórz za pomocą".

Dynamiczne podejście testowe

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

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

W przypadku odbierania elementów wymaga to:

  • Udostępnienia pliku aplikacji z innego źródła (np. AirDrop, e-mail), co spowoduje wyświetlenie dialogu "Otwórz za pomocą...".
  • Podłączenia metody application:openURL:options: oraz innych zidentyfikowanych metod podczas analizy statycznej, aby obserwować reakcję aplikacji.
  • Wykorzystania uszkodzonych plików lub technik fuzzingowych w celu oceny odporności aplikacji.

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: