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:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e 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 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:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF, controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository github di HackTricks e HackTricks Cloud.