Cordova Apps
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Per ulteriori dettagli controlla https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58. Questo è un riassunto:
Apache Cordova è riconosciuto per consentire lo sviluppo di applicazioni ibride utilizzando JavaScript, HTML e CSS. Permette la creazione di applicazioni Android e iOS; tuttavia, manca di un meccanismo predefinito per proteggere il codice sorgente dellâapplicazione. A differenza di React Native, Cordova non compila il codice sorgente per impostazione predefinita, il che può portare a vulnerabilitĂ di manomissione del codice. Cordova utilizza WebView per rendere le applicazioni, esponendo il codice HTML e JavaScript anche dopo essere stato compilato in file APK o IPA. React Native, al contrario, impiega una VM JavaScript per eseguire il codice JavaScript, offrendo una migliore protezione del codice sorgente.
Clonare unâApplicazione Cordova
Prima di clonare unâapplicazione Cordova, assicurati che NodeJS sia installato insieme ad altri prerequisiti come lâAndroid SDK, Java JDK e Gradle. La documentazione ufficiale di Cordova fornisce una guida completa per queste installazioni.
Considera unâapplicazione di esempio chiamata Bank.apk con il nome del pacchetto com.android.bank. Per accedere al codice sorgente, decomprimi bank.apk e naviga nella cartella bank/assets/www. Questa cartella contiene il codice sorgente completo dellâapplicazione, inclusi i file HTML e JS. La configurazione dellâapplicazione può essere trovata in bank/res/xml/config.xml.
Per clonare lâapplicazione, segui questi passaggi:
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
Copia il contenuto di bank/assets/www in bank-new/www, escludendo cordova_plugins.js, cordova.js, cordova-js-src/ e la directory plugins/.
Specifica la piattaforma (Android o iOS) quando crei un nuovo progetto Cordova. Per clonare unâapp Android, aggiungi la piattaforma Android. Tieni presente che le versioni della piattaforma di Cordova e i livelli API di Android sono distinti. Consulta la documentazione di Cordova per dettagli sulle versioni della piattaforma e sulle API Android supportate.
Per determinare la versione appropriata della piattaforma Cordova Android, controlla il PLATFORM_VERSION_BUILD_LABEL nel file cordova.js dellâapplicazione originale.
Dopo aver impostato la piattaforma, installa i plugin richiesti. Il file bank/assets/www/cordova_plugins.js dellâapplicazione originale elenca tutti i plugin e le loro versioni. Installa ogni plugin singolarmente come mostrato di seguito:
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
Se un plugin non è disponibile su npm, può essere prelevato da GitHub:
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
Assicurati che tutti i requisiti siano soddisfatti prima della compilazione:
cd bank-new
cordova requirements
Per costruire lâAPK, usa il seguente comando:
cd bank-new
cordova build android â packageType=apk
Questo comando genera un APK con lâopzione di debug abilitata, facilitando il debug tramite Google Chrome. Ă fondamentale firmare lâAPK prima dellâinstallazione, specialmente se lâapplicazione include meccanismi di rilevamento delle manomissioni del codice.
Strumento di Automazione
Per coloro che cercano di automatizzare il processo di clonazione, MobSecco è uno strumento raccomandato. Semplifica la clonazione delle applicazioni Android, semplificando i passaggi descritti sopra.
Rischi di Sicurezza e VulnerabilitĂ Recenti (2023-2025)
Lâarchitettura basata su plugin di Cordova significa che la maggior parte della superficie di attacco si trova allâinterno di plugin di terze parti e del ponte WebView. I seguenti problemi sono stati attivamente sfruttati o divulgati pubblicamente negli ultimi anni:
- Pacchetti NPM Maligni. Nel luglio 2024 il pacchetto
cordova-plugin-acuantè stato rimosso dal registro NPM dopo che è stato scoperto che inseriva codice maligno durante lâinstallazione (OSV-ID MAL-2024-7845). Qualsiasi macchina di sviluppo che ha eseguitonpm install cordova-plugin-acuantdovrebbe essere considerata compromessa. Auditpackage.json/package-lock.jsonper plugin Cordova inaspettati e fissa versioni fidate. OSV advisory - Deeplink Non Validati â XSS/RCE.
CleverTap Cordova Plugin ⤠2.6.2(CVE-2023-2507) non riesce a sanitizzare lâinput del deeplink, consentendo a un attaccante di iniettare JavaScript arbitrario che viene eseguito nel contesto principale di WebView quando viene aperto un link creato ad hoc. Aggiorna a ⼠2.6.3 o rimuovi i parametri URI non fidati a runtime. CVE-2023-2507 - Codice della Piattaforma Obsoleto.
cordova-android⤠12 viene fornito con targetSdk 33 o inferiore. A partire da maggio 2024 Google Play richiede API 34, e diverse funzionalità di indurimento di WebView (ad es.exported="false"generato automaticamente per i componenti) sono presenti solo in API 34+. Aggiorna acordova-android@13.0.0o versioni successive.
Controlli Rapidi durante un pentest
- Cerca
android:debuggable="true"nelAndroidManifest.xmldecompilato. Le build debuggabili espongono il WebView suchrome://inspectconsentendo lâiniezione completa di JS. - Rivedi
config.xmlper tag<access origin="*">eccessivamente permissivi o meta-tag CSP mancanti inwww/index.html. - Grep
www/pereval(,new Function(o HTML costruito dinamicamente che potrebbe trasformare bypass CSP in XSS. - Identifica i plugin incorporati in
plugins/ed eseguinpm audit --productionoosv-scanner --lockfileper trovare CVE noti.
Suggerimenti per Analisi Dinamica
Debugging Remoto di WebView
Se lâapplicazione è stata compilata in modalitĂ debug (o chiama esplicitamente WebView.setWebContentsDebuggingEnabled(true)), puoi allegare Chrome DevTools:
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
Questo ti offre una console JavaScript live, un ispettore DOM e la possibilitĂ di sovrascrivere le funzioni JavaScript a runtime â estremamente utile per bypassare la logica lato client. (Vedi la documentazione ufficiale di Google per ulteriori dettagli.)
Hooking the JS â Native bridge with Frida
Il punto di ingresso lato Java della maggior parte dei plugin è org.apache.cordova.CordovaPlugin.execute(...). Hookare questo metodo ti consente di monitorare o manomettere le chiamate effettuate da 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);
};
});
Raccomandazioni di indurimento (2025)
- Aggiorna alla piattaforma piĂš recente:
cordova-android@13(Maggio 2024) mira allâAPI 34 e porta nuove mitigazioni per WebView. - Rimuovi artefatti di debug: Assicurati che
android:debuggable="false"e evita di chiamaresetWebContentsDebuggingEnablednelle build di rilascio. - Imponi una CSP rigorosa e una AllowList: Aggiungi un tag
<meta http-equiv="Content-Security-Policy" ...>in ogni file HTML e limita le origini<access>inconfig.xml. Esempio di CSP minima che blocca gli script inline:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
- Disabilita il traffico in chiaro: In
AndroidManifest.xmlimpostaandroid:usesCleartextTraffic="false"e/o fornisci un [network-security-config] che impone TLS. - Igiene dei plugin:
- Fissa le versioni dei plugin con
npm cie committa ilpackage-lock.jsongenerato. - Esegui periodicamente
npm audit,osv-scannerocordova-check-plugins. - Offuscamento: Minifica JavaScript con Terser/UglifyJS e rimuovi le mappe sorgente dalle build di produzione per rallentare il reversing occasionale.
Riferimenti
- Apache Cordova â Note di rilascio di Cordova-Android 13.0.0 (Maggio 2024)
- OSV-ID MAL-2024-7845 â Codice malevolo in
cordova-plugin-acuant - CVE-2023-2507 â CleverTap Cordova Plugin deeplink XSS
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

