Cordova Apps
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Para mais detalhes, consulte https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58. Este é um resumo:
Apache Cordova é reconhecido por permitir o desenvolvimento de aplicações híbridas usando JavaScript, HTML e CSS. Ele permite a criação de aplicações Android e iOS; no entanto, carece de um mecanismo padrão para proteger o código-fonte da aplicação. Em contraste com o React Native, o Cordova não compila o código-fonte por padrão, o que pode levar a vulnerabilidades de manipulação de código. O Cordova utiliza WebView para renderizar aplicações, expondo o código HTML e JavaScript mesmo após ser compilado em arquivos APK ou IPA. O React Native, por outro lado, emprega uma VM JavaScript para executar o código JavaScript, oferecendo melhor proteção do código-fonte.
Clonando uma Aplicação Cordova
Antes de clonar uma aplicação Cordova, certifique-se de que o NodeJS está instalado, juntamente com outros pré-requisitos como o Android SDK, Java JDK e Gradle. A documentação oficial do Cordova fornece um guia abrangente para essas instalações.
Considere um exemplo de aplicação chamada Bank.apk
com o nome do pacote com.android.bank
. Para acessar o código-fonte, descompacte bank.apk
e navegue até a pasta bank/assets/www
. Esta pasta contém o código-fonte completo da aplicação, incluindo arquivos HTML e JS. A configuração da aplicação pode ser encontrada em bank/res/xml/config.xml
.
Para clonar a aplicação, siga estes passos:
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
Copie o conteúdo de bank/assets/www
para bank-new/www
, excluindo cordova_plugins.js
, cordova.js
, cordova-js-src/
e o diretório plugins/
.
Especifique a plataforma (Android ou iOS) ao criar um novo projeto Cordova. Para clonar um aplicativo Android, adicione a plataforma Android. Observe que as versões da plataforma do Cordova e os níveis da API do Android são distintos. Consulte a documentação do Cordova documentation para detalhes sobre versões da plataforma e APIs do Android suportadas.
Para determinar a versão apropriada da plataforma Cordova Android, verifique o PLATFORM_VERSION_BUILD_LABEL
no arquivo cordova.js
do aplicativo original.
Após configurar a plataforma, instale os plugins necessários. O arquivo bank/assets/www/cordova_plugins.js
do aplicativo original lista todos os plugins e suas versões. Instale cada plugin individualmente, conforme mostrado abaixo:
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
Se um plugin não estiver disponível no npm, ele pode ser obtido do GitHub:
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
Certifique-se de que todos os pré-requisitos sejam atendidos antes de compilar:
cd bank-new
cordova requirements
Para construir o APK, use o seguinte comando:
cd bank-new
cordova build android — packageType=apk
Este comando gera um APK com a opção de depuração ativada, facilitando a depuração via Google Chrome. É crucial assinar o APK antes da instalação, especialmente se a aplicação incluir mecanismos de detecção de adulteração de código.
Ferramenta de Automação
Para aqueles que buscam automatizar o processo de clonagem, MobSecco é uma ferramenta recomendada. Ela simplifica a clonagem de aplicações Android, facilitando os passos descritos acima.
Riscos de Segurança & Vulnerabilidades Recentes (2023-2025)
A arquitetura baseada em plugins do Cordova significa que a maior parte da superfície de ataque está dentro de plugins de terceiros e da ponte WebView. Os seguintes problemas foram explorados ativamente ou divulgados publicamente nos últimos anos:
- Pacotes NPM Maliciosos. Em julho de 2024, o pacote
cordova-plugin-acuant
foi removido do registro NPM após ser descoberto que inseria código malicioso durante a instalação (OSV-ID MAL-2024-7845). Qualquer máquina de desenvolvedor que executounpm install cordova-plugin-acuant
deve ser considerada comprometida. Auditepackage.json
/package-lock.json
em busca de plugins Cordova inesperados e fixe versões confiáveis. OSV advisory - Deeplinks Não Validados → XSS/RCE.
CleverTap Cordova Plugin ≤ 2.6.2
(CVE-2023-2507) falha em sanitizar a entrada de deeplink, permitindo que um atacante injete JavaScript arbitrário que é executado no contexto principal do WebView quando um link manipulado é aberto. Atualize para ≥ 2.6.3 ou remova parâmetros URI não confiáveis em tempo de execução. CVE-2023-2507 - Código de Plataforma Desatualizado.
cordova-android
≤ 12 é enviado com targetSdk 33 ou inferior. A partir de maio de 2024, o Google Play exige API 34, e vários recursos de endurecimento do WebView (por exemplo,exported="false"
gerado automaticamente para componentes) estão presentes apenas na API 34+. Atualize paracordova-android@13.0.0
ou posterior.
Verificações Rápidas durante um pentest
- Procure por
android:debuggable="true"
noAndroidManifest.xml
decompilado. Compilações depuráveis expõem o WebView através dechrome://inspect
, permitindo injeção total de JS. - Revise
config.xml
em busca de tags<access origin="*">
excessivamente permissivas ou falta de meta-tags CSP emwww/index.html
. - Grep
www/
em busca deeval(
,new Function(
ou HTML construído dinamicamente que poderia transformar contornos de CSP em XSS. - Identifique plugins incorporados em
plugins/
e executenpm audit --production
ouosv-scanner --lockfile
para encontrar CVEs conhecidos.
Dicas de Análise Dinâmica
Depuração Remota do WebView
Se a aplicação foi compilada em modo debug (ou chama explicitamente WebView.setWebContentsDebuggingEnabled(true)
), você pode anexar o Chrome DevTools:
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
Isso lhe dá um console JavaScript ao vivo, inspetor DOM e a capacidade de sobrescrever funções JavaScript em tempo de execução – extremamente útil para contornar a lógica do lado do cliente. (Veja a documentação oficial do Google para mais detalhes.)
Hooking the JS ⇄ Native bridge with Frida
O ponto de entrada do lado Java da maioria dos plugins é org.apache.cordova.CordovaPlugin.execute(...)
. Hooking este método permite que você monitore ou manipule chamadas feitas a partir do 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);
};
});
Recomendações de Fortalecimento (2025)
- Atualize para a plataforma mais recente:
cordova-android@13
(maio de 2024) tem como alvo a API 34 e traz novas mitig ações do WebView. - Remova artefatos de depuração: Certifique-se de que
android:debuggable="false"
e evite chamarsetWebContentsDebuggingEnabled
em builds de release. - Imponha um CSP rigoroso e uma AllowList: Adicione uma tag
<meta http-equiv="Content-Security-Policy" ...>
em cada arquivo HTML e restrinja as origens<access>
emconfig.xml
. Exemplo de CSP mínimo que bloqueia scripts inline:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
- Desative o tráfego em texto claro: No
AndroidManifest.xml
, definaandroid:usesCleartextTraffic="false"
e/ou forneça uma [network-security-config] que imponha TLS. - Higiene de plugins:
- Fixe versões de plugins com
npm ci
e faça commit dopackage-lock.json
gerado. - Execute periodicamente
npm audit
,osv-scanner
oucordova-check-plugins
. - Ofuscação: Minifique o JavaScript com Terser/UglifyJS e remova os mapas de origem das builds de produção para desacelerar a reversão casual.
Referências
- Apache Cordova – Notas de lançamento do Cordova-Android 13.0.0 (maio de 2024)
- OSV-ID MAL-2024-7845 – Código malicioso em
cordova-plugin-acuant
- CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.