# iOS UIActivity Sharing {{#include ../../banners/hacktricks-training.md}} # UIActivity Sharing Vereenvoudig Vanaf iOS 6 het derdeparty toepassings in staat gestel om **data** soos teks, URL's of beelde te **deel** deur middel van meganismes soos AirDrop, soos uiteengesit in Apple se [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). Hierdie funksie manifesteer deur 'n stelselswye _deel aktiwiteit bladsy_ wat verskyn wanneer daar met die "Deel" knoppie geinteraksie word. 'n Omvattende opsomming van al die ingeboude deel opsies is beskikbaar by [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Ontwikkelaars kan kies om spesifieke deel opsies uit te sluit as hulle dit onvanpas vir hul toepassing ag. ## **Hoe om Data te Deel** Aandag moet gegee word aan: - Die aard van die data wat gedeel word. - Die insluiting van pasgemaakte aktiwiteite. - Die uitsluiting van sekere aktiwiteit tipes. Deel word gefasiliteer deur die instansie van 'n `UIActivityViewController`, waaraan die items wat bedoel is om gedeel te word, oorgedra word. Dit word bereik deur te bel: ```bash $ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems 0x1000df034 45 44 initWithActivityItems:applicationActivities: ``` Ontwikkelaars moet die `UIActivityViewController` noukeurig ondersoek vir die aktiwiteite en persoonlike aktiwiteite waarmee dit geïnitialiseer is, sowel as enige gespesifiseerde `excludedActivityTypes`. ## **Hoe om Data te Ontvang** Die volgende aspekte is van kardinale belang wanneer data ontvang word: - Die verklaring van **persoonlike dokumenttipes**. - Die spesifikasie van **dokumenttipes wat die app kan oopmaak**. - Die verifikasie van die **integriteit van die ontvangde data**. Sonder toegang tot die bronkode, kan 'n mens steeds die `Info.plist` ondersoek vir sleutels soos `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations`, en `CFBundleDocumentTypes` om die tipes dokumente wat 'n app kan hanteer en verklaar, te verstaan. 'n Bondige gids oor hierdie sleutels is beskikbaar op [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), wat die belangrikheid van die definisie en invoer van UTI's vir sistemiese erkenning en die assosiasie van dokumenttipes met jou app vir integrasie in die "Open Met" dialoog beklemtoon. ## Dinamiese Toetsbenadering Om **aktiwiteite te stuur** kan 'n mens: - In die `init(activityItems:applicationActivities:)` metode inhaak om die items en aktiwiteite wat gedeel word, vas te vang. - Uitsluitingsaktiwiteite identifiseer deur die `excludedActivityTypes` eienskap te onderskep. Vir **items te ontvang**, behels dit: - 'n Lêer met die app van 'n ander bron (bv. AirDrop, e-pos) te deel wat die "Open met..." dialoog uitlok. - In te haak by `application:openURL:options:` onder andere metodes wat tydens statiese analise geïdentifiseer is om die app se reaksie te observeer. - Gebruik te maak van verkeerd geformateerde lêers of fuzzing tegnieke om die app se robuustheid te evalueer. ## Verwysings - [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}}