mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
56 lines
3.4 KiB
Markdown
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}}
|