iOS UIActivity Sharing

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

UIActivity Sharing Simplified

Починаючи з iOS 6, сторонні додатки отримали можливість ділитися даними такими як текст, URL-адреси або зображення, використовуючи механізми, такі як AirDrop, як зазначено в посібнику з міждодаткового зв'язку від Apple. Ця функція проявляється через загальносистемний лист активності обміну, який з'являється при взаємодії з кнопкою "Поділитися".

Вичерпний перелік усіх вбудованих варіантів обміну доступний за посиланням UIActivity.ActivityType. Розробники можуть вирішити виключити певні варіанти обміну, якщо вважають їх непридатними для свого додатку.

How to Share Data

Увага повинна бути зосереджена на:

  • Природі даних, що обмінюються.
  • Включенні користувацьких активностей.
  • Виключенні певних типів активностей.

Обмін здійснюється через створення UIActivityViewController, до якого передаються елементи, призначені для обміну. Це досягається шляхом виклику:

bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Розробники повинні ретельно перевіряти UIActivityViewController на предмет активностей та користувацьких активностей, з якими він ініціалізується, а також будь-яких вказаних excludedActivityTypes.

Як отримати дані

Наступні аспекти є критично важливими при отриманні даних:

  • Оголошення користувацьких типів документів.
  • Визначення типів документів, які може відкривати додаток.
  • Перевірка цілісності отриманих даних.

Без доступу до вихідного коду, можна все ще перевірити Info.plist на наявність ключів, таких як UTExportedTypeDeclarations, UTImportedTypeDeclarations та CFBundleDocumentTypes, щоб зрозуміти, які типи документів може обробляти та оголошувати додаток.

Стисла інструкція щодо цих ключів доступна на Stackoverflow, підкреслюючи важливість визначення та імпортування UTI для системного визнання та асоціювання типів документів з вашим додатком для інтеграції в діалозі "Відкрити з...".

Динамічний підхід до тестування

Щоб протестувати відправку активностей, можна:

  • Підключитися до методу init(activityItems:applicationActivities:), щоб захопити елементи та активності, що діляться.
  • Визначити виключені активності, перехопивши властивість excludedActivityTypes.

Для отримання елементів це включає:

  • Обмін файлом з додатком з іншого джерела (наприклад, AirDrop, електронна пошта), що викликає діалог "Відкрити з...".
  • Підключення application:openURL:options: серед інших методів, виявлених під час статичного аналізу, щоб спостерігати за реакцією додатка.
  • Використання неправильно сформованих файлів або технік фуззингу для оцінки надійності додатка.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks