{{#include ../../banners/hacktricks-training.md}} **Ceci est un résumé du post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)** ### Lister les fichiers dans le Media Store Pour lister les fichiers gérés par le Media Store, la commande ci-dessous peut être utilisée : ```bash $ content query --uri content://media/external/file ``` Pour une sortie plus conviviale, affichant uniquement l'identifiant et le chemin de chaque fichier indexé : ```bash $ content query --uri content://media/external/file --projection _id,_data ``` Les fournisseurs de contenu sont isolés dans leur propre espace de noms privé. L'accès à un fournisseur nécessite l'URI spécifique `content://`. Les informations sur les chemins d'accès à un fournisseur peuvent être obtenues à partir des manifestes d'application ou du code source du framework Android. ### Accès de Chrome aux Fournisseurs de Contenu Chrome sur Android peut accéder aux fournisseurs de contenu via le schéma `content://`, lui permettant d'accéder à des ressources comme des photos ou des documents exportés par des applications tierces. Pour illustrer cela, un fichier peut être inséré dans le Media Store et ensuite accessible via Chrome : Insérer une entrée personnalisée dans le Media Store : ```bash cd /sdcard echo "Hello, world!" > test.txt content insert --uri content://media/external/file \ --bind _data:s:/storage/emulated/0/test.txt \ --bind mime_type:s:text/plain ``` Découvrez l'identifiant du fichier nouvellement inséré : ```bash content query --uri content://media/external/file \ --projection _id,_data | grep test.txt # Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt ``` Le fichier peut ensuite être consulté dans Chrome en utilisant une URL construite avec l'identifiant du fichier. Par exemple, pour lister les fichiers liés à une application spécifique : ```bash content query --uri content://media/external/file --projection _id,_data | grep -i ``` ### Chrome CVE-2020-6516 : Contournement de la politique de même origine La _politique de même origine_ (SOP) est un protocole de sécurité dans les navigateurs qui restreint les pages web d'interagir avec des ressources provenant d'origines différentes, sauf si cela est explicitement autorisé par une politique de partage de ressources entre origines (CORS). Cette politique vise à prévenir les fuites d'informations et le vol de requêtes intersites. Chrome considère `content://` comme un schéma local, impliquant des règles SOP plus strictes, où chaque URL de schéma local est traitée comme une origine distincte. Cependant, CVE-2020-6516 était une vulnérabilité dans Chrome qui permettait de contourner les règles SOP pour les ressources chargées via une URL `content://`. En effet, le code JavaScript d'une URL `content://` pouvait accéder à d'autres ressources chargées via des URL `content://`, ce qui représentait une préoccupation majeure en matière de sécurité, en particulier sur les appareils Android exécutant des versions antérieures à Android 10, où le stockage scoping n'était pas implémenté. Le proof-of-concept ci-dessous démontre cette vulnérabilité, où un document HTML, après avoir été téléchargé sous **/sdcard** et ajouté au Media Store, utilise `XMLHttpRequest` dans son JavaScript pour accéder et afficher le contenu d'un autre fichier dans le Media Store, contournant les règles SOP. Proof-of-Concept HTML : ```xml PoC ``` {{#include ../../banners/hacktricks-training.md}}