hacktricks/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md
2024-02-10 13:03:23 +00:00

5.8 KiB

Condivisione UIActivity

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Condivisione UIActivity semplificata

A partire da iOS 6, le applicazioni di terze parti sono abilitate a 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 quando si interagisce con il pulsante "Condividi".

Un elenco completo di tutte le opzioni di condivisione integrate è disponibile su UIActivity.ActivityType. Gli sviluppatori possono scegliere di escludere specifiche opzioni di condivisione se le ritengono inadatte per la propria applicazione.

Come condividere dati

L'attenzione dovrebbe essere rivolta a:

  • La natura dei dati da condividere.
  • L'inclusione di attività personalizzate.
  • L'esclusione di determinati tipi di attività.

La condivisione avviene attraverso l'istanziazione di un UIActivityViewController, a cui vengono passati gli elementi destinati alla condivisione. Questo viene realizzato chiamando:

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

Gli sviluppatori dovrebbero esaminare attentamente UIActivityViewController per le attività e le attività personalizzate con cui è inizializzato, così come eventuali excludedActivityTypes specificati.

Come ricevere dati

Gli aspetti seguenti sono cruciali quando si ricevono dati:

  • La dichiarazione di tipi di documenti personalizzati.
  • La specifica dei tipi di documenti che l'app può aprire.
  • La verifica dell'integrità dei dati ricevuti.

Senza accesso al codice sorgente, è comunque possibile ispezionare Info.plist per chiavi come UTExportedTypeDeclarations, UTImportedTypeDeclarations e CFBundleDocumentTypes per capire i tipi di documenti che un'app può gestire e dichiarare.

Una guida sintetica su queste chiavi è disponibile su Stackoverflow, evidenziando l'importanza di definire e importare UTI per il riconoscimento a livello di sistema e associare tipi di documenti all'app per l'integrazione nella finestra di dialogo "Apri con".

Approccio di testing dinamico

Per testare le attività di invio, 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 quanto riguarda la ricezione degli elementi, comporta:

  • Condividere un file con l'app da un'altra fonte (ad esempio, AirDrop, email) che richiama la finestra di dialogo "Apri con...".
  • Intercettare application:openURL:options: tra gli 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

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: