Cordova Apps

Reading time: 8 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Vir verdere besonderhede, kyk na https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58. Dit is 'n opsomming:

Apache Cordova is bekend vir die moontlikheid om hibridetoepassings te ontwikkel met JavaScript, HTML, en CSS. Dit maak die skepping van Android- en iOS-toepassings moontlik; egter, dit het nie 'n standaardmeganisme om die toepassing se bronkode te beveilig nie. In teenstelling met React Native, kompileer Cordova nie die bronkode nie, wat kan lei tot kwesbaarhede in kode-manipulasie. Cordova gebruik WebView om toepassings te vertoon, wat die HTML- en JavaScript-kode blootstel selfs nadat dit in APK of IPA-lĂȘers gekompileer is. React Native, aan die ander kant, gebruik 'n JavaScript VM om JavaScript-kode uit te voer, wat beter beskerming van die bronkode bied.

Kloning van 'n Cordova-toepassing

Voordat jy 'n Cordova-toepassing kloon, maak seker dat NodeJS geĂŻnstalleer is saam met ander vereistes soos die Android SDK, Java JDK, en Gradle. Die amptelike Cordova dokumentasie bied 'n omvattende gids vir hierdie installasies.

Neem 'n voorbeeldtoepassing genaamd Bank.apk met die pakketnaam com.android.bank. Om toegang tot die bronkode te verkry, pak bank.apk uit en navigeer na die bank/assets/www gids. Hierdie gids bevat die volledige bronkode van die toepassing, insluitend HTML- en JS-lĂȘers. Die toepassing se konfigurasie kan in bank/res/xml/config.xml gevind word.

Om die toepassing te kloon, volg hierdie stappe:

bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new

Kopieer die inhoud van bank/assets/www na bank-new/www, met uitsluiting van cordova_plugins.js, cordova.js, cordova-js-src/, en die plugins/ gids.

Specifiseer die platform (Android of iOS) wanneer 'n nuwe Cordova-projek geskep word. Vir die kloon van 'n Android-app, voeg die Android-platform by. Let daarop dat Cordova se platformweergawe en Android API-vlakke verskillend is. Verwys na die Cordova documentation vir besonderhede oor platformweergawe en ondersteunde Android API's.

Om die toepaslike Cordova Android-platformweergawe te bepaal, kyk na die PLATFORM_VERSION_BUILD_LABEL in die oorspronklike aansoek se cordova.js-lĂȘer.

Nadat die platform opgestel is, installeer die vereiste plugins. Die oorspronklike aansoek se bank/assets/www/cordova_plugins.js-lĂȘer lys al die plugins en hul weergawes. Installeer elke plugin individueel soos hieronder getoon:

bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1

As 'n plugin nie op npm beskikbaar is nie, kan dit van GitHub verkry word:

bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git

Maak seker dat alle vereistes nagekom word voordat jy saamstel:

bash
cd bank-new
cordova requirements

Om die APK te bou, gebruik die volgende opdrag:

bash
cd bank-new
cordova build android — packageType=apk

Hierdie opdrag genereer 'n APK met die foutopsporing opsie geaktiveer, wat foutopsporing via Google Chrome vergemaklik. Dit is van kardinale belang om die APK te teken voor installasie, veral as die aansoek kode manipulasie opsporing meganismes insluit.

Outomatisering Gereedskap

Vir diegene wat die kloonproses wil outomatiseer, MobSecco is 'n aanbevole gereedskap. Dit stroomlyn die kloon van Android aansoeke, wat die stappe hierbo vereenvoudig.


Sekuriteitsrisiko's & Onlangse Kw vulnerabilities (2023-2025)

Cordova se plugin-gebaseerde argitektuur beteken dat meeste van die aanval oppervlak binne derdeparty plugins en die WebView brug sit. Die volgende probleme is aktief uitgebuit of publiek bekend gemaak in die afgelope paar jaar:

  • Kwaadaardige NPM Pakkette. In Julie 2024 is die pakket cordova-plugin-acuant uit die NPM registrasie verwyder nadat dit ontdek is dat dit kwaadaardige kode tydens installasie laat val (OSV-ID MAL-2024-7845). Enige ontwikkelaar masjien wat npm install cordova-plugin-acuant uitgevoer het, moet as gecompromitteerd beskou word. Oudit package.json/package-lock.json vir onverwagte Cordova plugins en pin vertroude weergawes. OSV advisory
  • Ongevalideerde Deeplinks → XSS/RCE. CleverTap Cordova Plugin ≀ 2.6.2 (CVE-2023-2507) slaag daarin om deeplink invoer te saniteer, wat 'n aanvaller toelaat om arbitrĂȘre JavaScript in te voeg wat in die hoof WebView konteks uitgevoer word wanneer 'n vervaardigde skakel geopen word. Opdateer na ≄ 2.6.3 of verwyder onbetroubare URI parameters tydens uitvoering. CVE-2023-2507
  • Verouderde Platform Kode. cordova-android ≀ 12 verskaf met targetSdk 33 of laer. Begin Mei 2024 vereis Google Play API 34, en verskeie WebView versterking funksies (bv. outomaties gegenereerde exported="false" vir komponente) is slegs teenwoordig in API 34+. Opgradeer na cordova-android@13.0.0 of later.

Vinige kontroles tydens 'n pentest

  1. Soek vir android:debuggable="true" in die gedecompileerde AndroidManifest.xml. Debugbare weergawes stel die WebView bloot oor chrome://inspect wat volle JS-inspuiting toelaat.
  2. Hersien config.xml vir oordrewe toelaatbare <access origin="*"> etikette of ontbrekende CSP meta-etikette in www/index.html.
  3. Grep www/ vir eval(, new Function( of dinamies-geboude HTML wat CSP omseilings in XSS kan omskep.
  4. Identifiseer ingebedde plugins in plugins/ en voer npm audit --production of osv-scanner --lockfile uit om bekende CVEs te vind.

Dinamiese Analise Wenke

Afgeleë WebView Foutopsporing

As die aansoek in debug modus gecompileer is (of eksplisiet WebView.setWebContentsDebuggingEnabled(true) aanroep), kan jy Chrome DevTools aanheg:

bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"

Dit gee jou 'n lewendige JavaScript-konsol, DOM-inspekteerder en die vermoĂ« om JavaScript-funksies tydens uitvoering te oorskryf – uiters handig om kliĂ«nt-kant logika te omseil. (Sien Google se amptelike dokumentasie vir meer besonderhede.)

Hooking the JS ⇄ Native bridge with Frida

Die Java-kant toegangspunt van die meeste plugins is org.apache.cordova.CordovaPlugin.execute(...). Hooking hierdie metode laat jou toe om oproepe wat van JavaScript gemaak word, te monitor of te manipuleer:

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);
};
});

Versterking Aanbevelings (2025)

  • Opdateer na die nuutste platform: cordova-android@13 (Mei 2024) teiken API 34 en bring nuwe WebView versagings.
  • Verwyder debug artefakte: Verseker android:debuggable="false" en vermy om setWebContentsDebuggingEnabled in vrystellingsboude aan te roep.
  • Handhaaf 'n streng CSP & AllowList: Voeg 'n <meta http-equiv="Content-Security-Policy" ...> tag in elke HTML-lĂȘer by en beperk <access> oorspronge in config.xml. Voorbeeld minimale CSP wat inline skripte blokkeer:
html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
  • Deaktiveer duidelike teks verkeer: In AndroidManifest.xml stel android:usesCleartextTraffic="false" in en/of verskaf 'n [network-security-config] wat TLS afdwing.
  • Plugin higiĂ«ne:
  • Pin plugin weergawes met npm ci en commit die gegenereerde package-lock.json.
  • Periodes loop npm audit, osv-scanner of cordova-check-plugins.
  • Obfuskasie: Minify JavaScript met Terser/UglifyJS en verwyder bronkaarte uit produksieboude om informele omkering te vertraag.

Verwysings

  • Apache Cordova – Cordova-Android 13.0.0 vrylating notas (Mei 2024)
  • OSV-ID MAL-2024-7845 – Kwaadwillige kode in cordova-plugin-acuant
  • CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks