# 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).