iOS UIActivity Sharing
Reading time: 3 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
UIActivity Sharing Semplificato
A partire da iOS 6, le applicazioni di terze parti possono condividere dati come testo, URL o immagini utilizzando meccanismi come AirDrop, come descritto nella guida alla comunicazione tra app di Apple. Questa funzionalità si manifesta attraverso un foglio di attività di condivisione a livello di sistema che appare interagendo con il pulsante "Condividi".
Un elenco completo di tutte le opzioni di condivisione integrate è disponibile in UIActivity.ActivityType. Gli sviluppatori possono scegliere di escludere specifiche opzioni di condivisione se le ritengono inadeguate per la loro applicazione.
Come Condividere Dati
L'attenzione dovrebbe essere rivolta a:
- La natura dei dati condivisi.
- L'inclusione di attività personalizzate.
- L'esclusione di determinati tipi di attività.
La condivisione è facilitata attraverso l'istanza di un UIActivityViewController
, a cui vengono passati gli elementi destinati alla condivisione. Questo si ottiene chiamando:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
Gli sviluppatori dovrebbero esaminare il UIActivityViewController
per le attività e le attività personalizzate con cui è inizializzato, così come per eventuali excludedActivityTypes
specificati.
Come Ricevere Dati
I seguenti aspetti sono cruciali quando si ricevono dati:
- La dichiarazione di tipi di documento personalizzati.
- La specifica di tipi di documento che l'app può aprire.
- La verifica dell'integrità dei dati ricevuti.
Senza accesso al codice sorgente, è possibile comunque ispezionare il Info.plist
per chiavi come UTExportedTypeDeclarations
, UTImportedTypeDeclarations
e CFBundleDocumentTypes
per comprendere i tipi di documenti che un'app può gestire e dichiarare.
Una guida concisa su queste chiavi è disponibile su Stackoverflow, evidenziando l'importanza di definire e importare UTI per il riconoscimento a livello di sistema e associare i tipi di documento con la tua app per l'integrazione nella finestra di dialogo "Apri con".
Approccio di Testing Dinamico
Per testare l'invio di attività, si potrebbe:
- Intercettare il metodo
init(activityItems:applicationActivities:)
per catturare gli elementi e le attività condivise. - Identificare le attività escluse intercettando la proprietà
excludedActivityTypes
.
Per ricevere elementi, implica:
- Condividere un file con l'app da un'altra fonte (ad es., AirDrop, email) che provoca la finestra di dialogo "Apri con...".
- Intercettare
application:openURL:options:
tra altri metodi identificati durante l'analisi statica per osservare la risposta dell'app. - Utilizzare file malformati o tecniche di fuzzing per valutare la robustezza dell'app.
Riferimenti
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.