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 pt
This commit is contained in:
parent
25a6ae7920
commit
53f9f81d21
@ -1,26 +1,26 @@
|
||||
# Aplicativos Cordova
|
||||
# Cordova Apps
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**Para mais detalhes, consulte [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Este é um resumo:
|
||||
|
||||
Apache Cordova é reconhecido por permitir o desenvolvimento de **aplicativos híbridos** usando **JavaScript, HTML e CSS**. Ele permite a criação de aplicativos para Android e iOS; no entanto, não possui um mecanismo padrão para proteger o código-fonte do aplicativo. 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 aplicativos, 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.
|
||||
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 um Aplicativo Cordova
|
||||
### Clonando uma Aplicação Cordova
|
||||
|
||||
Antes de clonar um aplicativo 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](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) oficial do Cordova fornece um guia abrangente para essas instalações.
|
||||
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](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) oficial do Cordova fornece um guia abrangente para essas instalações.
|
||||
|
||||
Considere um exemplo de aplicativo chamado `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 do aplicativo, incluindo arquivos HTML e JS. A configuração do aplicativo pode ser encontrada em `bank/res/xml/config.xml`.
|
||||
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 o aplicativo, siga estas etapas:
|
||||
Para clonar a aplicação, siga estes passos:
|
||||
```bash
|
||||
npm install -g cordova@latest
|
||||
cordova create bank-new com.android.bank Bank
|
||||
cd bank-new
|
||||
```
|
||||
Copie os conteúdos de `bank/assets/www` para `bank-new/www`, excluindo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` e o diretório `plugins/`.
|
||||
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. Note que as versões de plataforma do Cordova e os níveis de API do Android são distintos. Consulte a [documentação](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) do Cordova para detalhes sobre versões de plataforma e APIs do Android suportadas.
|
||||
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](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) 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.
|
||||
|
||||
@ -50,4 +50,76 @@ Este comando gera um APK com a opção de depuração ativada, facilitando a dep
|
||||
|
||||
Para aqueles que buscam automatizar o processo de clonagem, **[MobSecco](https://github.com/Anof-cyber/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 executou `npm install cordova-plugin-acuant` deve ser considerada comprometida. Audite `package.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 para `cordova-android@13.0.0` ou posterior.
|
||||
|
||||
### Verificações Rápidas durante um pentest
|
||||
|
||||
1. **Procure por `android:debuggable="true"`** no `AndroidManifest.xml` decompilado. Compilações depuráveis expõem o WebView através de `chrome://inspect`, permitindo injeção total de JS.
|
||||
2. Revise `config.xml` em busca de tags `<access origin="*">` excessivamente permissivas ou falta de meta-tags CSP em `www/index.html`.
|
||||
3. Grep `www/` em busca de `eval(`, `new Function(` ou HTML construído dinamicamente que poderia transformar contornos de CSP em XSS.
|
||||
4. Identifique plugins incorporados em `plugins/` e execute `npm audit --production` ou `osv-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:
|
||||
```bash
|
||||
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:
|
||||
```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 chamar `setWebContentsDebuggingEnabled` 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>` em `config.xml`.
|
||||
Exemplo de CSP mínimo que bloqueia scripts inline:
|
||||
```html
|
||||
<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`, defina `android: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 do `package-lock.json` gerado.
|
||||
* Execute periodicamente `npm audit`, `osv-scanner` ou `cordova-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
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user