mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/cordova-apps.md'] to uk
This commit is contained in:
parent
c21d785951
commit
2c08e8d7b4
@ -4,13 +4,13 @@
|
||||
|
||||
**Для отримання додаткової інформації перегляньте [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Це резюме:
|
||||
|
||||
Apache Cordova відомий тим, що дозволяє розробку **гібридних додатків** за допомогою **JavaScript, HTML та CSS**. Він дозволяє створення додатків для Android та iOS; однак, у нього немає механізму за замовчуванням для захисту вихідного коду додатка. На відміну від React Native, Cordova за замовчуванням не компілює вихідний код, що може призвести до вразливостей через підробку коду. Cordova використовує WebView для рендерингу додатків, що відкриває HTML та JavaScript код навіть після компіляції в APK або IPA файли. React Native, навпаки, використовує JavaScript VM для виконання JavaScript коду, що забезпечує кращий захист вихідного коду.
|
||||
Apache Cordova відомий тим, що дозволяє розробку **гібридних додатків** за допомогою **JavaScript, HTML та CSS**. Він дозволяє створювати додатки для Android та iOS; однак, у нього немає стандартного механізму для захисту вихідного коду додатка. На відміну від React Native, Cordova за замовчуванням не компілює вихідний код, що може призвести до вразливостей через підробку коду. Cordova використовує WebView для рендерингу додатків, що відкриває HTML та JavaScript код навіть після компіляції в APK або IPA файли. React Native, навпаки, використовує JavaScript VM для виконання JavaScript коду, що забезпечує кращий захист вихідного коду.
|
||||
|
||||
### Клонування Cordova Додатку
|
||||
|
||||
Перед клонуванням Cordova додатку переконайтеся, що NodeJS встановлено разом з іншими передумовами, такими як Android SDK, Java JDK та Gradle. Офіційна документація Cordova [документація](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) надає всебічний посібник для цих установок.
|
||||
|
||||
Розгляньте приклад додатку з назвою `Bank.apk` з ім'ям пакета `com.android.bank`. Щоб отримати доступ до вихідного коду, розпакуйте `bank.apk` і перейдіть до папки `bank/assets/www`. Ця папка містить повний вихідний код додатку, включаючи HTML та JS файли. Конфігурацію додатку можна знайти в `bank/res/xml/config.xml`.
|
||||
Розгляньте приклад додатку з назвою `Bank.apk` з ім'ям пакету `com.android.bank`. Щоб отримати доступ до вихідного коду, розпакуйте `bank.apk` і перейдіть до папки `bank/assets/www`. Ця папка містить повний вихідний код додатку, включаючи HTML та JS файли. Конфігурацію додатку можна знайти в `bank/res/xml/config.xml`.
|
||||
|
||||
Щоб клонувати додаток, виконайте ці кроки:
|
||||
```bash
|
||||
@ -39,7 +39,7 @@ cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
|
||||
cd bank-new
|
||||
cordova requirements
|
||||
```
|
||||
Щоб зібрати APK, використовуйте наступну команду:
|
||||
Щоб створити APK, використовуйте наступну команду:
|
||||
```bash
|
||||
cd bank-new
|
||||
cordova build android — packageType=apk
|
||||
@ -50,4 +50,76 @@ cordova build android — packageType=apk
|
||||
|
||||
Для тих, хто прагне автоматизувати процес клонування, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** є рекомендованим інструментом. Він спрощує клонування Android-додатків, спрощуючи кроки, описані вище.
|
||||
|
||||
---
|
||||
|
||||
## Ризики безпеки та недавні вразливості (2023-2025)
|
||||
|
||||
Архітектура на основі плагінів Cordova означає, що **більшість поверхні атаки знаходиться всередині сторонніх плагінів і моста WebView**. Наступні проблеми активно експлуатувалися або були публічно розкриті в останні кілька років:
|
||||
|
||||
* **Зловмисні пакети NPM.** У липні 2024 року пакет `cordova-plugin-acuant` був видалений з реєстру NPM після того, як було виявлено, що він завантажує зловмисний код під час установки (OSV-ID MAL-2024-7845). Будь-яка розробницька машина, яка виконала `npm install cordova-plugin-acuant`, повинна вважатися скомпрометованою. Аудит `package.json`/`package-lock.json` на наявність несподіваних плагінів Cordova та закріплення довірених версій. [OSV advisory](/)
|
||||
* **Невалідовані глибокі посилання → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) не очищає вхідні дані глибоких посилань, що дозволяє зловмиснику впроваджувати довільний JavaScript, який виконується в основному контексті WebView, коли відкривається підготовлене посилання. Оновіть до ≥ 2.6.3 або видаліть недовірені параметри URI під час виконання. [CVE-2023-2507](/)
|
||||
* **Застарілий код платформи.** `cordova-android` ≤ 12 постачається з targetSdk 33 або нижче. Починаючи з травня 2024 року, Google Play вимагає API 34, і кілька функцій зміцнення WebView (наприклад, автоматично згенероване `exported="false"` для компонентів) присутні лише в API 34+. Оновіть до `cordova-android@13.0.0` або пізніше.
|
||||
|
||||
### Швидкі перевірки під час пентесту
|
||||
|
||||
1. **Шукайте `android:debuggable="true"`** у декомпільованому `AndroidManifest.xml`. Налагоджувані збірки відкривають WebView через `chrome://inspect`, що дозволяє повну ін'єкцію JS.
|
||||
2. Перегляньте `config.xml` на наявність надто дозволяючих тегів `<access origin="*">` або відсутніх CSP мета-тегів у `www/index.html`.
|
||||
3. Використовуйте grep `www/` для `eval(`, `new Function(` або динамічно збудованого HTML, що може перетворити обходи CSP на XSS.
|
||||
4. Визначте вбудовані плагіни в `plugins/` і запустіть `npm audit --production` або `osv-scanner --lockfile`, щоб знайти відомі CVE.
|
||||
|
||||
---
|
||||
|
||||
## Поради з динамічного аналізу
|
||||
|
||||
### Віддалене налагодження WebView
|
||||
|
||||
Якщо додаток був скомпільований у **debug** режимі (або явно викликає `WebView.setWebContentsDebuggingEnabled(true)`), ви можете підключити Chrome DevTools:
|
||||
```bash
|
||||
adb forward tcp:9222 localabstract:chrome_devtools_remote
|
||||
google-chrome --new-window "chrome://inspect/#devices"
|
||||
```
|
||||
Це надає вам живу консоль JavaScript, інспектор DOM та можливість переписувати функції JavaScript під час виконання – надзвичайно зручно для обходу логіки на стороні клієнта. (Дивіться офіційну документацію Google для отримання додаткової інформації.)
|
||||
|
||||
### Підключення моста JS ⇄ Native за допомогою Frida
|
||||
|
||||
Точка входу на стороні Java більшості плагінів – `org.apache.cordova.CordovaPlugin.execute(...)`. Підключення цього методу дозволяє вам контролювати або змінювати виклики, зроблені з JavaScript:
|
||||
```javascript
|
||||
// frida -U -f com.vulnerable.bank -l hook.js --no-pause
|
||||
Java.perform(function () {
|
||||
var CordovaPlugin = Java.use('org.apache.cordova.CordovaPlugin');
|
||||
CordovaPlugin.execute.overload('java.lang.String','org.json.JSONArray','org.apache.cordova.CallbackContext').implementation = function(act, args, ctx) {
|
||||
console.log('[Cordova] ' + act + ' => ' + args);
|
||||
// Tamper the first argument of a sensitive action
|
||||
if (act === 'encrypt') {
|
||||
args.put(0, '1234');
|
||||
}
|
||||
return this.execute(act, args, ctx);
|
||||
};
|
||||
});
|
||||
```
|
||||
---
|
||||
|
||||
## Рекомендації щодо зміцнення (2025)
|
||||
|
||||
* **Оновіть до останньої платформи:** `cordova-android@13` (травень 2024) націлений на API 34 і приносить нові заходи захисту WebView.
|
||||
* **Видаліть артефакти налагодження:** Переконайтеся, що `android:debuggable="false"` і уникайте виклику `setWebContentsDebuggingEnabled` у випускних збірках.
|
||||
* **Забезпечте сувору CSP та AllowList:** Додайте тег `<meta http-equiv="Content-Security-Policy" ...>` у кожному HTML-файлі та обмежте походження `<access>` у `config.xml`.
|
||||
Приклад мінімальної CSP, яка блокує вбудовані скрипти:
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
|
||||
```
|
||||
* **Вимкніть трафік у відкритому тексті:** У `AndroidManifest.xml` встановіть `android:usesCleartextTraffic="false"` та/або надайте [network-security-config], який забезпечує TLS.
|
||||
* **Гігієна плагінів:**
|
||||
* Закріпіть версії плагінів за допомогою `npm ci` та зафіксуйте згенерований `package-lock.json`.
|
||||
* Періодично запускайте `npm audit`, `osv-scanner` або `cordova-check-plugins`.
|
||||
* **Обфускація:** Мінімізуйте JavaScript за допомогою Terser/UglifyJS та видаліть карти джерел з виробничих збірок, щоб сповільнити випадкове реверсування.
|
||||
|
||||
---
|
||||
|
||||
## Посилання
|
||||
|
||||
* Apache Cordova – примітки до випуску Cordova-Android 13.0.0 (травень 2024)
|
||||
* OSV-ID MAL-2024-7845 – Шкідливий код у `cordova-plugin-acuant`
|
||||
* CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user