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 pl
This commit is contained in:
parent
71c12e222c
commit
38903ef8aa
@ -4,13 +4,13 @@
|
||||
|
||||
**Aby uzyskać więcej szczegółów, sprawdź [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. To jest podsumowanie:
|
||||
|
||||
Apache Cordova jest uznawany za umożliwiający rozwój **aplikacji hybrydowych** przy użyciu **JavaScript, HTML i CSS**. Umożliwia tworzenie aplikacji na Androida i iOS; jednak brakuje mu domyślnego mechanizmu zabezpieczającego kod źródłowy aplikacji. W przeciwieństwie do React Native, Cordova nie kompiluje kodu źródłowego domyślnie, co może prowadzić do podatności na manipulację kodem. Cordova wykorzystuje WebView do renderowania aplikacji, ujawniając kod HTML i JavaScript nawet po skompilowaniu do plików APK lub IPA. React Native z kolei wykorzystuje VM JavaScript do wykonywania kodu JavaScript, oferując lepszą ochronę kodu źródłowego.
|
||||
Apache Cordova jest uznawany za umożliwiający rozwój **aplikacji hybrydowych** przy użyciu **JavaScript, HTML i CSS**. Umożliwia tworzenie aplikacji na Androida i iOS; jednak nie ma domyślnego mechanizmu zabezpieczającego kod źródłowy aplikacji. W przeciwieństwie do React Native, Cordova nie kompiluje kodu źródłowego domyślnie, co może prowadzić do podatności na manipulację kodem. Cordova wykorzystuje WebView do renderowania aplikacji, ujawniając kod HTML i JavaScript nawet po skompilowaniu do plików APK lub IPA. React Native z kolei wykorzystuje VM JavaScript do wykonywania kodu JavaScript, oferując lepszą ochronę kodu źródłowego.
|
||||
|
||||
### Klonowanie aplikacji Cordova
|
||||
|
||||
Przed sklonowaniem aplikacji Cordova upewnij się, że NodeJS jest zainstalowany wraz z innymi wymaganiami, takimi jak Android SDK, Java JDK i Gradle. Oficjalna [dokumentacja](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) Cordova zawiera szczegółowy przewodnik dotyczący tych instalacji.
|
||||
|
||||
Rozważ przykład aplikacji o nazwie `Bank.apk` z nazwą pakietu `com.android.bank`. Aby uzyskać dostęp do kodu źródłowego, rozpakuj `bank.apk` i przejdź do folderu `bank/assets/www`. Ten folder zawiera pełny kod źródłowy aplikacji, w tym pliki HTML i JS. Konfigurację aplikacji można znaleźć w `bank/res/xml/config.xml`.
|
||||
Rozważ przykład aplikacji o nazwie `Bank.apk` z nazwą pakietu `com.android.bank`. Aby uzyskać dostęp do kodu źródłowego, rozpakuj `bank.apk` i przejdź do folderu `bank/assets/www`. Ten folder zawiera pełny kod źródłowy aplikacji, w tym pliki HTML i JS. Konfiguracja aplikacji znajduje się w `bank/res/xml/config.xml`.
|
||||
|
||||
Aby sklonować aplikację, wykonaj następujące kroki:
|
||||
```bash
|
||||
@ -20,7 +20,7 @@ cd bank-new
|
||||
```
|
||||
Skopiuj zawartość `bank/assets/www` do `bank-new/www`, z wyłączeniem `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` oraz katalogu `plugins/`.
|
||||
|
||||
Określ platformę (Android lub iOS) podczas tworzenia nowego projektu Cordova. Aby sklonować aplikację na Androida, dodaj platformę Android. Zauważ, że wersje platformy Cordova i poziomy API Androida są różne. Zapoznaj się z dokumentacją Cordova [documentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) w celu uzyskania szczegółowych informacji na temat wersji platformy i obsługiwanych API Androida.
|
||||
Określ platformę (Android lub iOS) podczas tworzenia nowego projektu Cordova. Aby sklonować aplikację na Androida, dodaj platformę Android. Zauważ, że wersje platform Cordova i poziomy API Androida są różne. Zapoznaj się z dokumentacją Cordova [documentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) w celu uzyskania szczegółowych informacji na temat wersji platform i obsługiwanych API Androida.
|
||||
|
||||
Aby określić odpowiednią wersję platformy Cordova Android, sprawdź `PLATFORM_VERSION_BUILD_LABEL` w pliku `cordova.js` oryginalnej aplikacji.
|
||||
|
||||
@ -29,7 +29,7 @@ Po skonfigurowaniu platformy zainstaluj wymagane wtyczki. Plik `bank/assets/www/
|
||||
cd bank-new
|
||||
cordova plugin add cordova-plugin-dialogs@2.0.1
|
||||
```
|
||||
Jeśli wtyczka nie jest dostępna na npm, można ją pobrać z GitHub:
|
||||
Jeśli wtyczka nie jest dostępna w npm, można ją pozyskać z GitHub:
|
||||
```bash
|
||||
cd bank-new
|
||||
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
|
||||
@ -48,6 +48,78 @@ To polecenie generuje APK z włączoną opcją debugowania, co ułatwia debugowa
|
||||
|
||||
### Narzędzie Automatyzacji
|
||||
|
||||
Dla tych, którzy chcą zautomatyzować proces klonowania, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** jest polecanym narzędziem. Ułatwia klonowanie aplikacji na Androida, upraszczając opisane powyżej kroki.
|
||||
Dla tych, którzy chcą zautomatyzować proces klonowania, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** jest zalecanym narzędziem. Ułatwia klonowanie aplikacji na Androida, upraszczając opisane powyżej kroki.
|
||||
|
||||
---
|
||||
|
||||
## Ryzyka Bezpieczeństwa i Ostatnie Luki (2023-2025)
|
||||
|
||||
Architektura oparta na wtyczkach Cordova oznacza, że **większość powierzchni ataku znajduje się wewnątrz wtyczek stron trzecich i mostka WebView**. Następujące problemy były aktywnie wykorzystywane lub publicznie ujawniane w ostatnich latach:
|
||||
|
||||
* **Złośliwe pakiety NPM.** W lipcu 2024 roku pakiet `cordova-plugin-acuant` został usunięty z rejestru NPM po odkryciu, że w trakcie instalacji wprowadzał złośliwy kod (OSV-ID MAL-2024-7845). Każda maszyna dewelopera, która wykonała `npm install cordova-plugin-acuant`, powinna być uznana za skompromitowaną. Audytuj `package.json`/`package-lock.json` w poszukiwaniu nieoczekiwanych wtyczek Cordova i przypnij zaufane wersje. [OSV advisory](/)
|
||||
* **Niewalidowane Deeplinki → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) nie sanitizuje wejścia deeplink, co pozwala atakującemu na wstrzyknięcie dowolnego JavaScriptu, który wykonuje się w głównym kontekście WebView, gdy otwierany jest spreparowany link. Zaktualizuj do ≥ 2.6.3 lub usuń nieufne parametry URI w czasie wykonywania. [CVE-2023-2507](/)
|
||||
* **Nieaktualny kod platformy.** `cordova-android` ≤ 12 dostarczany jest z targetSdk 33 lub niższym. Od maja 2024 roku Google Play wymaga API 34, a kilka funkcji wzmacniających WebView (np. automatycznie generowane `exported="false"` dla komponentów) jest obecnych tylko w API 34+. Zaktualizuj do `cordova-android@13.0.0` lub nowszego.
|
||||
|
||||
### Szybkie kontrole podczas pentestów
|
||||
|
||||
1. **Szukaj `android:debuggable="true"`** w dekompilowanym `AndroidManifest.xml`. Wersje debugujące ujawniają WebView przez `chrome://inspect`, co pozwala na pełne wstrzykiwanie JS.
|
||||
2. Przejrzyj `config.xml` w poszukiwaniu zbyt liberalnych tagów `<access origin="*">` lub brakujących meta-tagów CSP w `www/index.html`.
|
||||
3. Grep `www/` w poszukiwaniu `eval(`, `new Function(` lub dynamicznie konstruowanego HTML, co może przekształcić obejścia CSP w XSS.
|
||||
4. Zidentyfikuj osadzone wtyczki w `plugins/` i uruchom `npm audit --production` lub `osv-scanner --lockfile`, aby znaleźć znane CVE.
|
||||
|
||||
---
|
||||
|
||||
## Wskazówki dotyczące analizy dynamicznej
|
||||
|
||||
### Zdalne debugowanie WebView
|
||||
|
||||
Jeśli aplikacja została skompilowana w **trybie debugowania** (lub jawnie wywołuje `WebView.setWebContentsDebuggingEnabled(true)`), możesz podłączyć Chrome DevTools:
|
||||
```bash
|
||||
adb forward tcp:9222 localabstract:chrome_devtools_remote
|
||||
google-chrome --new-window "chrome://inspect/#devices"
|
||||
```
|
||||
To daje ci aktywną konsolę JavaScript, inspektor DOM i możliwość nadpisywania funkcji JavaScript w czasie rzeczywistym – niezwykle przydatne do omijania logiki po stronie klienta. (Zobacz oficjalną dokumentację Google, aby uzyskać więcej szczegółów.)
|
||||
|
||||
### Hooking the JS ⇄ Native bridge with Frida
|
||||
|
||||
Punkt wejścia po stronie Java większości wtyczek to `org.apache.cordova.CordovaPlugin.execute(...)`. Hooking tej metody pozwala monitorować lub manipulować wywołaniami dokonywanymi z 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);
|
||||
};
|
||||
});
|
||||
```
|
||||
---
|
||||
|
||||
## Rekomendacje dotyczące wzmocnienia (2025)
|
||||
|
||||
* **Zaktualizuj do najnowszej platformy:** `cordova-android@13` (maj 2024) celuje w API 34 i wprowadza nowe łaty dla WebView.
|
||||
* **Usuń artefakty debugowania:** Upewnij się, że `android:debuggable="false"` i unikaj wywoływania `setWebContentsDebuggingEnabled` w wersjach produkcyjnych.
|
||||
* **Wymuś surową CSP i AllowList:** Dodaj tag `<meta http-equiv="Content-Security-Policy" ...>` w każdym pliku HTML i ogranicz pochodzenie `<access>` w `config.xml`.
|
||||
Przykład minimalnej CSP, która blokuje skrypty inline:
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
|
||||
```
|
||||
* **Wyłącz ruch w czystym tekście:** W `AndroidManifest.xml` ustaw `android:usesCleartextTraffic="false"` i/lub dostarcz [network-security-config], który wymusza TLS.
|
||||
* **Higiena wtyczek:**
|
||||
* Zablokuj wersje wtyczek za pomocą `npm ci` i zatwierdź wygenerowany `package-lock.json`.
|
||||
* Okresowo uruchamiaj `npm audit`, `osv-scanner` lub `cordova-check-plugins`.
|
||||
* **Obfuskacja:** Minifikuj JavaScript za pomocą Terser/UglifyJS i usuń mapy źródłowe z wersji produkcyjnych, aby spowolnić przypadkowe odwracanie.
|
||||
|
||||
---
|
||||
|
||||
## Odniesienia
|
||||
|
||||
* Apache Cordova – notatki o wydaniu Cordova-Android 13.0.0 (maj 2024)
|
||||
* OSV-ID MAL-2024-7845 – Złośliwy kod w `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