{{#include ../../banners/hacktricks-training.md}} **To jest podsumowanie posta [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/)** ### Wyświetlanie plików w Media Store Aby wyświetlić pliki zarządzane przez Media Store, można użyć poniższego polecenia: ```bash $ content query --uri content://media/external/file ``` Aby uzyskać bardziej przyjazny dla użytkownika wynik, wyświetlając tylko identyfikator i ścieżkę każdego zindeksowanego pliku: ```bash $ content query --uri content://media/external/file --projection _id,_data ``` Dostawcy treści są izolowani w swoim własnym prywatnym przestrzeni nazw. Dostęp do dostawcy wymaga konkretnego URI `content://`. Informacje o ścieżkach dostępu do dostawcy można uzyskać z manifestów aplikacji lub kodu źródłowego frameworka Androida. ### Dostęp Chrome do dostawców treści Chrome na Androidzie może uzyskać dostęp do dostawców treści za pośrednictwem schematu `content://`, co pozwala mu na dostęp do zasobów, takich jak zdjęcia czy dokumenty eksportowane przez aplikacje innych firm. Aby to zilustrować, plik można wstawić do Media Store, a następnie uzyskać do niego dostęp za pośrednictwem Chrome: Wstaw niestandardowy wpis do 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 ``` Odkryj identyfikator nowo wstawionego pliku: ```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 ``` Plik można następnie wyświetlić w Chrome, używając adresu URL skonstruowanego z identyfikatora pliku. Na przykład, aby wyświetlić pliki związane z konkretną aplikacją: ```bash content query --uri content://media/external/file --projection _id,_data | grep -i ``` ### Chrome CVE-2020-6516: Ominięcie Polityki Takiej Samej Pochodzenia _**Polityka Takiej Samej Pochodzenia**_ (SOP) to protokół bezpieczeństwa w przeglądarkach, który ogranicza interakcje stron internetowych z zasobami z różnych źródeł, chyba że wyraźnie dozwolone przez politykę Cross-Origin-Resource-Sharing (CORS). Polityka ta ma na celu zapobieganie wyciekom informacji i fałszywym żądaniom między witrynami. Chrome traktuje `content://` jako lokalny schemat, co implikuje surowsze zasady SOP, gdzie każdy lokalny URL schematu jest traktowany jako osobne źródło. Jednak CVE-2020-6516 była luką w Chrome, która pozwalała na ominięcie zasad SOP dla zasobów ładowanych za pomocą URL `content://`. W efekcie, kod JavaScript z URL `content://` mógł uzyskać dostęp do innych zasobów ładowanych za pomocą URL `content://`, co stanowiło istotny problem bezpieczeństwa, szczególnie na urządzeniach z Androidem działających w wersjach wcześniejszych niż Android 10, gdzie nie wdrożono przechowywania w zakresie. Poniższy dowód koncepcji demonstruje tę lukę, gdzie dokument HTML, po przesłaniu pod **/sdcard** i dodaniu do Media Store, używa `XMLHttpRequest` w swoim JavaScript, aby uzyskać dostęp i wyświetlić zawartość innego pliku w Media Store, omijając zasady SOP. Proof-of-Concept HTML: ```xml PoC ``` {{#include ../../banners/hacktricks-training.md}}