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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
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:
$ 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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.