iOS UIActivity Sharing

Reading time: 3 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

UIActivity Sharing Vereinfacht

Seit iOS 6 können Drittanbieteranwendungen Daten wie Text, URLs oder Bilder über Mechanismen wie AirDrop teilen, wie im Inter-App Communication guide von Apple beschrieben. Diese Funktion zeigt ein systemweites Share-Aktivitätsblatt an, das beim Interagieren mit der Schaltfläche "Teilen" erscheint.

Eine umfassende Auflistung aller integrierten Freigabeoptionen ist unter UIActivity.ActivityType verfügbar. Entwickler können entscheiden, bestimmte Freigabeoptionen auszuschließen, wenn sie diese für ihre Anwendung als ungeeignet erachten.

Wie man Daten teilt

Die Aufmerksamkeit sollte auf Folgendes gerichtet werden:

  • Die Art der geteilten Daten.
  • Die Einbeziehung benutzerdefinierter Aktivitäten.
  • Der Ausschluss bestimmter Aktivitätstypen.

Das Teilen erfolgt durch die Instanziierung eines UIActivityViewController, dem die zum Teilen vorgesehenen Elemente übergeben werden. Dies wird erreicht durch:

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

Entwickler sollten den UIActivityViewController hinsichtlich der Aktivitäten und benutzerdefinierten Aktivitäten, mit denen er initialisiert wird, sowie der angegebenen excludedActivityTypes genau prüfen.

Wie man Daten empfängt

Die folgenden Aspekte sind entscheidend beim Empfangen von Daten:

  • Die Deklaration von benutzerdefinierten Dokumenttypen.
  • Die Spezifikation von Dokumenttypen, die die App öffnen kann.
  • Die Überprüfung der Integrität der empfangenen Daten.

Ohne Zugriff auf den Quellcode kann man dennoch die Info.plist auf Schlüssel wie UTExportedTypeDeclarations, UTImportedTypeDeclarations und CFBundleDocumentTypes überprüfen, um die Arten von Dokumenten zu verstehen, die eine App verarbeiten und deklarieren kann.

Ein prägnanter Leitfaden zu diesen Schlüsseln ist auf Stackoverflow verfügbar, der die Bedeutung der Definition und des Imports von UTIs für die systemweite Erkennung sowie die Zuordnung von Dokumenttypen zu Ihrer App für die Integration im Dialog "Öffnen mit" hervorhebt.

Dynamischer Testansatz

Um Aktivitäten zu senden, könnte man:

  • In die Methode init(activityItems:applicationActivities:) einhaken, um die Elemente und Aktivitäten, die geteilt werden, zu erfassen.
  • Ausgeschlossene Aktivitäten identifizieren, indem man die Eigenschaft excludedActivityTypes abfängt.

Für das Empfangen von Elementen umfasst es:

  • Eine Datei von einer anderen Quelle (z. B. AirDrop, E-Mail) mit der App zu teilen, die den Dialog "Öffnen mit..." auslöst.
  • application:openURL:options: unter anderen während der statischen Analyse identifizierten Methoden abfangen, um die Reaktion der App zu beobachten.
  • Fehlformatierte Dateien oder Fuzzing-Techniken verwenden, um die Robustheit der App zu bewerten.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks