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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
$ 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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.