<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Un aspect critique du développement Android implique la gestion correcte des WebViews. Ce guide met en évidence les configurations clés et les pratiques de sécurité pour atténuer les risques associés à l'utilisation de WebView.
Par défaut, les WebViews permettent l'accès aux fichiers. Cette fonctionnalité est contrôlée par la méthode `setAllowFileAccess()`, disponible depuis Android API niveau 3 (Cupcake 1.5). Les applications avec l'autorisation **android.permission.READ\_EXTERNAL\_STORAGE** peuvent lire des fichiers depuis le stockage externe en utilisant un schéma d'URL de fichier (`file://chemin/vers/fichier`).
* **Accès universel à partir d'URL de fichier** : Cette fonctionnalité obsolète permettait des requêtes entre origines à partir d'URL de fichier, posant un risque de sécurité important en raison des attaques potentielles de type XSS. Le paramètre par défaut est désactivé (`false`) pour les applications ciblant Android Jelly Bean et plus récent.
* Pour vérifier ce paramètre, utilisez `getAllowUniversalAccessFromFileURLs()`.
* Pour modifier ce paramètre, utilisez `setAllowUniversalAccessFromFileURLs(boolean)`.
* **Accès aux fichiers à partir d'URL de fichier** : Cette fonctionnalité, également obsolète, contrôlait l'accès au contenu à partir d'autres URL de schéma de fichier. Comme l'accès universel, son paramètre par défaut est désactivé pour une sécurité renforcée.
* Utilisez `getAllowFileAccessFromFileURLs()` pour vérifier et `setAllowFileAccessFromFileURLs(boolean)` pour définir.
Pour désactiver l'accès au système de fichiers tout en accédant toujours aux ressources et aux actifs, la méthode `setAllowFileAccess()` est utilisée. Avec Android R et supérieur, le paramètre par défaut est `false`.
* Vérifiez avec `getAllowFileAccess()`.
* Activez ou désactivez avec `setAllowFileAccess(boolean)`.
La classe **WebViewAssetLoader** est l'approche moderne pour charger des fichiers locaux. Elle utilise des URL http(s) pour accéder aux ressources et aux actifs locaux, se conformant à la politique Same-Origin, facilitant ainsi la gestion de CORS.
* **JavaScript** : Désactivé par défaut dans les WebViews, il peut être activé via `setJavaScriptEnabled()`. Il est conseillé de faire preuve de prudence car activer JavaScript sans les protections appropriées peut introduire des vulnérabilités de sécurité.
* **Intent Scheme** : Les WebViews peuvent gérer le schéma `intent`, ce qui peut potentiellement conduire à des exploits s'ils ne sont pas gérés avec soin. Une vulnérabilité exemple impliquait un paramètre WebView exposé "support\_url" qui pouvait être exploité pour exécuter des attaques de script entre sites (XSS).
Une fonctionnalité est fournie par Android qui permet à **JavaScript** dans un WebView d'invoquer des **fonctions d'application Android natives**. Cela est réalisé en utilisant la méthode `addJavascriptInterface`, qui intègre JavaScript avec les fonctionnalités natives d'Android, appelé un _pont JavaScript WebView_. Il est conseillé de faire preuve de prudence car cette méthode permet à toutes les pages dans le WebView d'accéder à l'objet Interface JavaScript enregistré, ce qui pose un risque de sécurité si des informations sensibles sont exposées via ces interfaces.
* **Une prudence extrême est requise** pour les applications ciblant les versions d'Android inférieures à 4.2 en raison d'une vulnérabilité permettant l'exécution de code à distance via JavaScript malveillant, exploitant la réflexion.
* Les **interfaces JavaScript** peuvent interagir avec le code natif, comme le montrent les exemples où une méthode de classe est exposée à JavaScript:
* Pour atténuer les risques, **limitez l'utilisation du pont JavaScript** au code livré avec l'APK et empêchez le chargement de JavaScript à partir de sources distantes. Pour les anciens appareils, définissez le niveau API minimum à 17.
* Une méthode documentée permet d'atteindre une RCE par réflexion en exécutant une charge utile spécifique. Cependant, l'annotation `@JavascriptInterface` empêche l'accès non autorisé aux méthodes, limitant la surface d'attaque.
* Le **débogage à distance** est possible avec **Chrome Developer Tools**, permettant l'interaction et l'exécution arbitraire de JavaScript dans le contenu de WebView.
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.