# Condivisione UIActivity
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
# 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](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) 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](https://developer.apple.com/documentation/uikit/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: ```bash $ 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](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), 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 * [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).