hacktricks/src/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md

56 lines
3.5 KiB
Markdown

# 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}}