{{#include ../../banners/hacktricks-training.md}} **Questo è un riepilogo del 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/)** ### Elencare i file nel Media Store Per elencare i file gestiti dal Media Store, è possibile utilizzare il comando seguente: ```bash $ content query --uri content://media/external/file ``` Per un output più amichevole, visualizzando solo l'identificatore e il percorso di ciascun file indicizzato: ```bash $ content query --uri content://media/external/file --projection _id,_data ``` I provider di contenuti sono isolati nel loro namespace privato. L'accesso a un provider richiede l'URI specifico `content://`. Le informazioni sui percorsi per accedere a un provider possono essere ottenute dai manifest delle applicazioni o dal codice sorgente del framework Android. ### Accesso di Chrome ai Provider di Contenuti Chrome su Android può accedere ai provider di contenuti tramite lo schema `content://`, consentendogli di accedere a risorse come foto o documenti esportati da applicazioni di terze parti. Per illustrare questo, un file può essere inserito nel Media Store e poi accesso tramite Chrome: Inserisci un'entrata personalizzata nel 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 ``` Scopri l'identificatore del file appena inserito: ```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 ``` Il file può quindi essere visualizzato in Chrome utilizzando un URL costruito con l'identificatore del file. Ad esempio, per elencare i file relativi a un'applicazione specifica: ```bash content query --uri content://media/external/file --projection _id,_data | grep -i ``` ### Chrome CVE-2020-6516: Bypass della Same-Origin-Policy La _Same Origin Policy_ (SOP) è un protocollo di sicurezza nei browser che limita le pagine web dall'interagire con risorse provenienti da origini diverse, a meno che non sia esplicitamente consentito da una politica di Cross-Origin-Resource-Sharing (CORS). Questa politica mira a prevenire perdite di informazioni e attacchi di cross-site request forgery. Chrome considera `content://` come uno schema locale, implicando regole SOP più severe, dove ogni URL di schema locale è trattato come un'origine separata. Tuttavia, CVE-2020-6516 era una vulnerabilità in Chrome che consentiva un bypass delle regole SOP per le risorse caricate tramite un URL `content://`. Di fatto, il codice JavaScript da un URL `content://` poteva accedere ad altre risorse caricate tramite URL `content://`, il che rappresentava una significativa preoccupazione per la sicurezza, specialmente sui dispositivi Android che eseguivano versioni precedenti ad Android 10, dove lo storage scoping non era implementato. La prova di concetto qui sotto dimostra questa vulnerabilità, dove un documento HTML, dopo essere stato caricato sotto **/sdcard** e aggiunto al Media Store, utilizza `XMLHttpRequest` nel suo JavaScript per accedere e visualizzare i contenuti di un altro file nel Media Store, bypassando le regole SOP. Proof-of-Concept HTML: ```xml PoC ``` {{#include ../../banners/hacktricks-training.md}}