# iOS UIActivity Sharing {{#include ../../banners/hacktricks-training.md}} # UIActivity Sharing Simplified Od iOS 6 pa nadalje, aplikacije trećih strana su omogućene da **dele podatke** kao što su tekst, URL-ovi ili slike koristeći mehanizme poput AirDrop-a, kako je navedeno u Apple-ovom [Inter-App Communication guide](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3). Ova funkcija se manifestuje kroz sistemski _share activity sheet_ koji se pojavljuje prilikom interakcije sa dugmetom "Share". Sveobuhvatna enumeracija svih ugrađenih opcija deljenja dostupna je na [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Programeri mogu odlučiti da isključe određene opcije deljenja ako smatraju da nisu prikladne za njihovu aplikaciju. ## **Kako deliti podatke** Pažnja treba biti usmerena na: - Prirodu podataka koji se dele. - Uključivanje prilagođenih aktivnosti. - Isključivanje određenih tipova aktivnosti. Deljenje se olakšava instanciranjem `UIActivityViewController`, kojem se prosleđuju stavke namenjene deljenju. To se postiže pozivanjem: ```bash $ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems 0x1000df034 45 44 initWithActivityItems:applicationActivities: ``` Developeri bi trebali pažljivo pregledati `UIActivityViewController` za aktivnosti i prilagođene aktivnosti sa kojima je inicijalizovan, kao i sve navedene `excludedActivityTypes`. ## **Kako primiti podatke** Sledeći aspekti su ključni prilikom primanja podataka: - Deklaracija **prilagođenih tipova dokumenata**. - Specifikacija **tipova dokumenata koje aplikacija može otvoriti**. - Verifikacija **integriteta primljenih podataka**. Bez pristupa izvornoj kodu, može se pregledati `Info.plist` za ključeve kao što su `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations`, i `CFBundleDocumentTypes` kako bi se razumele vrste dokumenata koje aplikacija može obraditi i deklarisati. Kratak vodič o ovim ključevima je dostupan na [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), naglašavajući važnost definisanja i uvoza UTI za sistemsko prepoznavanje i povezivanje tipova dokumenata sa vašom aplikacijom za integraciju u dijalogu "Otvoriti sa...". ## Pristup dinamičkom testiranju Da bi se testirale **aktivnosti slanja**, može se: - Hook-ovati u `init(activityItems:applicationActivities:)` metodu da bi se uhvatili stavke i aktivnosti koje se dele. - Identifikovati isključene aktivnosti presretanjem `excludedActivityTypes` svojstva. Za **primanje stavki**, to uključuje: - Deljenje datoteke sa aplikacijom iz drugog izvora (npr. AirDrop, email) koja pokreće dijalog "Otvoriti sa...". - Hook-ovanje `application:openURL:options:` među drugim metodama identifikovanim tokom statičke analize da bi se posmatrao odgovor aplikacije. - Korišćenje neispravnih datoteka ili fuzzing tehnika za procenu otpornosti aplikacije. ## Reference - [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) {{#include ../../banners/hacktricks-training.md}}