Cordova Apps
Reading time: 8 minutes
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-acuant
dovrebbe essere considerata compromessa. Auditpackage.json
/package-lock.json
per 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.0
o versioni successive.
Controlli Rapidi durante un pentest
- Cerca
android:debuggable="true"
nelAndroidManifest.xml
decompilato. Le build debuggabili espongono il WebView suchrome://inspect
consentendo l'iniezione completa di JS. - Rivedi
config.xml
per 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 --production
oosv-scanner --lockfile
per 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 chiamaresetWebContentsDebuggingEnabled
nelle 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.xml
impostaandroid:usesCleartextTraffic="false"
e/o fornisci un [network-security-config] che impone TLS. - Igiene dei plugin:
- Fissa le versioni dei plugin con
npm ci
e committa ilpackage-lock.json
generato. - Esegui periodicamente
npm audit
,osv-scanner
ocordova-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.