From 7f64d65a3627764459c5c33a517ffd61d8a54bbf Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 16 Jul 2025 12:10:26 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/android-app-pentesting/drozer-tutoria --- .../exploiting-content-providers.md | 58 ++++++++++++++++++- theme/ai.js | 46 +++++++++++---- 2 files changed, 91 insertions(+), 13 deletions(-) diff --git a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md index 5794bee49..c6d6e4a5d 100644 --- a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md +++ b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md @@ -52,7 +52,7 @@ content://com.mwr.example.sieve.DBContentProvider/Keys/ content://com.mwr.example.sieve.DBContentProvider/Passwords content://com.mwr.example.sieve.DBContentProvider/Passwords/ ``` -Вам також слід перевірити **код ContentProvider**, щоб шукати запити: +Вам також слід перевірити **код ContentProvider**, щоб знайти запити: ![](<../../../images/image (121) (1) (1) (1).png>) @@ -67,7 +67,7 @@ content://com.mwr.example.sieve.DBContentProvider/Passwords/ Ймовірно, більшість Content Providers використовуються як **інтерфейс** для **бази даних**. Тому, якщо ви можете отримати до неї доступ, ви зможете **витягувати, оновлювати, вставляти та видаляти** інформацію.\ Перевірте, чи можете ви **отримати доступ до чутливої інформації** або спробуйте змінити її, щоб **обійти механізми авторизації**. -Перевіряючи код Content Provider, **зверніть увагу** також на **функції**, названі як: _query, insert, update і delete_: +Перевіряючи код Content Provider, **зверніть увагу** також на **функції**, названі так: _query, insert, update та delete_: ![](<../../../images/image (887).png>) @@ -145,7 +145,7 @@ android_metadata notes sqlite_sequence ``` -## **Content Providers, що підтримуються файловою системою** +## **Content Providers, що базуються на файловій системі** Content providers також можуть бути використані для **доступу до файлів:** @@ -173,10 +173,62 @@ Vulnerable Providers: content://com.mwr.example.sieve.FileBackupProvider/ content://com.mwr.example.sieve.FileBackupProvider ``` +## 2023-2025 Оновлення та сучасні поради + +### Drozer 3.x (Python 3) вийшов + +WithSecure відновила підтримку drozer у 2022 році та перенесла фреймворк на **Python 3** (остання версія **3.1.0 – квітень 2024**). +Окрім виправлень сумісності, нові модулі, які особливо корисні при роботі з Content Providers, включають: + +* `scanner.provider.exported` – перелік лише провайдерів з `android:exported="true"`. +* `app.provider.grant` – автоматично викликає `grantUriPermission()`, щоб ви могли спілкуватися з провайдерами, які очікують `FLAG_GRANT_READ_URI_PERMISSION` / `FLAG_GRANT_WRITE_URI_PERMISSION` на Android 12+. +* Краще оброблення **Scoped Storage**, щоб файлові провайдери на Android 11+ все ще могли бути доступні. + +Оновлення (хост та агент): +```bash +pipx install --force "git+https://github.com/WithSecureLabs/drozer@v3.1.0" +adb install drozer-agent-3.1.0.apk +``` +### Використання вбудованого `cmd content` допоміжного засобу (ADB ≥ 8.0) + +Усі сучасні пристрої Android постачаються з CLI, який може запитувати/оновлювати провайдери **без встановлення будь-якого агента**: +```bash +adb shell cmd content query --uri content://com.test.provider/items/ +adb shell cmd content update --uri content://com.test.provider/items/1 \ +--bind price:d:1337 +adb shell cmd content call --uri content://com.test.provider \ +--method evilMethod --arg 'foo' +``` +Об'єднайте це з `run-as ` або кореневою оболонкою, щоб протестувати провайдери, доступні лише всередині. + +### Останні реальні CVE, які зловживали Провайдерами Контенту + +| CVE | Рік | Компонент | Клас помилки | Вплив | +|-----|------|-----------|--------------|-------| +| CVE-2024-43089 | 2024 | MediaProvider | Перехід по шляху в `openFile()` | Читання довільного файлу з приватного сховища будь-якого додатку | +| CVE-2023-35670 | 2023 | MediaProvider | Перехід по шляху | Розкриття інформації | + +Відтворіть CVE-2024-43089 на вразливій збірці: +```bash +adb shell cmd content read \ +--uri content://media/external_primary/file/../../data/data/com.target/shared_prefs/foo.xml +``` +### Чек-лист посилення для API 30+ + +* Оголосіть `android:exported="false"`, якщо провайдер **необхідно** зробити публічним – з API 31 цей атрибут є обов'язковим. +* Застосовуйте **дозволи** та/або `android:grantUriPermissions="true"` замість експорту всього провайдера. +* Додайте до білого списку дозволені аргументи `projection`, `selection` та `sortOrder` (наприклад, створюйте запити з `SQLiteQueryBuilder.setProjectionMap`). +* У `openFile()` канонізуйте запитуваний шлях (`FileUtils`) і відхиляйте послідовності `..`, щоб запобігти обходу. +* При відкритті файлів надавайте перевагу **Storage Access Framework** або `FileProvider`. + +Ці зміни в останніх версіях Android означають, що багато застарілих експлуатаційних примітивів все ще працюють, але вимагають додаткових прапорців/дозволів, які оновлені модулі drozer або допоміжна програма `cmd content` можуть застосувати автоматично. + ## Посилання - [https://www.tutorialspoint.com/android/android_content_providers.htm](https://www.tutorialspoint.com/android/android_content_providers.htm) - [https://manifestsecurity.com/android-application-security-part-15/](https://manifestsecurity.com/android-application-security-part-15/) - [https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf) +- [https://github.com/WithSecureLabs/drozer/releases/tag/3.1.0](https://github.com/WithSecureLabs/drozer/releases/tag/3.1.0) +- [https://source.android.com/security/bulletin/2024-07-01](https://source.android.com/security/bulletin/2024-07-01) {{#include ../../../banners/hacktricks-training.md}} diff --git a/theme/ai.js b/theme/ai.js index 68d091923..a376d751b 100644 --- a/theme/ai.js +++ b/theme/ai.js @@ -4,9 +4,10 @@ (() => { - const KEY = 'htSummerDiscountDismissed'; - const IMG = '/images/discount.jpeg'; - const TXT = 'HT Summer Discount, Last Days!'; + const KEY = 'htSummerDiscountsDismissed'; + const IMG = '/images/discount.jpeg'; + const TXT = 'Click here for HT Summer Discounts, Last Days!'; + const URL = 'https://training.hacktricks.xyz'; /* Stop if user already dismissed */ if (localStorage.getItem(KEY) === 'true') return; @@ -32,13 +33,37 @@ display: flex; flex-direction: column; align-items: stretch; `); - /* --- Title bar (separate, over image) --- */ + /* --- Title bar (link + close) --- */ const titleBar = $('div', ` - padding: 1rem; text-align: center; + position: relative; + padding: 1rem 2.5rem 1rem 1rem; /* room for the close button */ + text-align: center; background: #222; color: #fff; font-size: 1.3rem; font-weight: 700; `); - titleBar.textContent = TXT; + + const link = $('a', ` + color: inherit; + text-decoration: none; + display: block; + `); + link.href = URL; + link.target = '_blank'; + link.rel = 'noopener noreferrer'; + link.textContent = TXT; + titleBar.appendChild(link); + + /* Close "X" (no persistence) */ + const closeBtn = $('button', ` + position: absolute; top: .25rem; right: .5rem; + background: transparent; border: none; + color: #fff; font-size: 1.4rem; line-height: 1; + cursor: pointer; padding: 0; margin: 0; + `); + closeBtn.setAttribute('aria-label', 'Close'); + closeBtn.textContent = '✕'; + closeBtn.onclick = () => overlay.remove(); + titleBar.appendChild(closeBtn); /* --- Image --- */ const img = $('img'); @@ -62,14 +87,15 @@ modal.append(titleBar, img, label); overlay.appendChild(modal); - (document.readyState === 'loading' - ? () => document.addEventListener('DOMContentLoaded', () => document.body.appendChild(overlay), { once: true }) - : () => document.body.appendChild(overlay))(); + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => document.body.appendChild(overlay), { once: true }); + } else { + document.body.appendChild(overlay); + } })(); - /** * HackTricks AI Chat Widget v1.16 – resizable sidebar * ---------------------------------------------------