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

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:

bash
$ 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