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

56 lines
3.4 KiB
Markdown

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