{{#include ../../banners/hacktricks-training.md}} **Este é um resumo do 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/)** ### Listando Arquivos no Media Store Para listar arquivos gerenciados pelo Media Store, o comando abaixo pode ser usado: ```bash $ content query --uri content://media/external/file ``` Para uma saída mais amigável, exibindo apenas o identificador e o caminho de cada arquivo indexado: ```bash $ content query --uri content://media/external/file --projection _id,_data ``` Os provedores de conteúdo estão isolados em seu próprio namespace privado. O acesso a um provedor requer o URI específico `content://`. Informações sobre os caminhos para acessar um provedor podem ser obtidas a partir de manifests de aplicativos ou do código-fonte do framework Android. ### Acesso do Chrome aos Provedores de Conteúdo O Chrome no Android pode acessar provedores de conteúdo através do esquema `content://`, permitindo que acesse recursos como fotos ou documentos exportados por aplicativos de terceiros. Para ilustrar isso, um arquivo pode ser inserido no Media Store e, em seguida, acessado via Chrome: Insira uma entrada personalizada no 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 ``` Descubra o identificador do arquivo recém-inserido: ```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 ``` O arquivo pode ser visualizado no Chrome usando uma URL construída com o identificador do arquivo. Por exemplo, para listar arquivos relacionados a um aplicativo específico: ```bash content query --uri content://media/external/file --projection _id,_data | grep -i ``` ### Chrome CVE-2020-6516: Bypass da Same-Origin-Policy A _Same Origin Policy_ (SOP) é um protocolo de segurança em navegadores que restringe páginas da web de interagir com recursos de origens diferentes, a menos que explicitamente permitido por uma política de Cross-Origin-Resource-Sharing (CORS). Esta política visa prevenir vazamentos de informações e falsificação de requisições entre sites. O Chrome considera `content://` como um esquema local, implicando regras SOP mais rigorosas, onde cada URL de esquema local é tratada como uma origem separada. No entanto, a CVE-2020-6516 foi uma vulnerabilidade no Chrome que permitiu um bypass das regras SOP para recursos carregados via uma URL `content://`. Na prática, o código JavaScript de uma URL `content://` poderia acessar outros recursos carregados via URLs `content://`, o que era uma preocupação significativa de segurança, especialmente em dispositivos Android executando versões anteriores ao Android 10, onde o armazenamento escopado não foi implementado. A prova de conceito abaixo demonstra essa vulnerabilidade, onde um documento HTML, após ser carregado sob **/sdcard** e adicionado ao Media Store, usa `XMLHttpRequest` em seu JavaScript para acessar e exibir o conteúdo de outro arquivo no Media Store, contornando as regras SOP. Proof-of-Concept HTML: ```xml PoC ``` {{#include ../../banners/hacktricks-training.md}}