hacktricks/mobile-pentesting/cordova-apps.md

80 lines
6.1 KiB
Markdown
Raw Normal View History

# Aplicaciones Cordova
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Para más detalles, consulta [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 es un resumen:
Apache Cordova es reconocido por permitir el desarrollo de **aplicaciones híbridas** utilizando **JavaScript, HTML y CSS**. Permite la creación de aplicaciones para Android e iOS; sin embargo, carece de un mecanismo predeterminado para asegurar el código fuente de la aplicación. A diferencia de React Native, Cordova no compila el código fuente por defecto, lo que puede llevar a vulnerabilidades de manipulación de código. Cordova utiliza WebView para renderizar aplicaciones, exponiendo el código HTML y JavaScript incluso después de ser compilado en archivos APK o IPA. React Native, en cambio, emplea una VM de JavaScript para ejecutar código JavaScript, ofreciendo mejor protección del código fuente.
### Clonando una Aplicación Cordova
Antes de clonar una aplicación Cordova, asegúrate de que NodeJS esté instalado junto con otros requisitos previos como el SDK de Android, Java JDK y Gradle. La [documentación](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) oficial de Cordova proporciona una guía completa para estas instalaciones.
Considera un ejemplo de aplicación llamada `Bank.apk` con el nombre de paquete `com.android.bank`. Para acceder al código fuente, descomprime `bank.apk` y navega a la carpeta `bank/assets/www`. Esta carpeta contiene el código fuente completo de la aplicación, incluidos los archivos HTML y JS. La configuración de la aplicación se puede encontrar en `bank/res/xml/config.xml`.
Para clonar la aplicación, sigue estos pasos:
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Copia el contenido de `bank/assets/www` a `bank-new/www`, excluyendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` y el directorio `plugins/`.
Especifica la plataforma (Android o iOS) al crear un nuevo proyecto de Cordova. Para clonar una aplicación de Android, añade la plataforma Android. Ten en cuenta que las versiones de plataforma de Cordova y los niveles de API de Android son distintos. Consulta la [documentación](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) de Cordova para obtener detalles sobre las versiones de plataforma y las API de Android compatibles.
Para determinar la versión de plataforma de Cordova Android adecuada, verifica el `PLATFORM_VERSION_BUILD_LABEL` en el archivo `cordova.js` de la aplicación original.
Después de configurar la plataforma, instala los plugins requeridos. El archivo `bank/assets/www/cordova_plugins.js` de la aplicación original enumera todos los plugins y sus versiones. Instala cada plugin individualmente como se muestra a continuación:
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
Si un plugin no está disponible en npm, se puede obtener de GitHub:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
Asegúrate de que se cumplan todos los requisitos previos antes de compilar:
```bash
cd bank-new
cordova requirements
```
Para construir el APK, usa el siguiente comando:
```bash
cd bank-new
cordova build android — packageType=apk
```
Este comando genera un APK con la opción de depuración habilitada, facilitando la depuración a través de Google Chrome. Es crucial firmar el APK antes de la instalación, especialmente si la aplicación incluye mecanismos de detección de manipulación de código.
### Herramienta de Automatización
Para aquellos que buscan automatizar el proceso de clonación, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** es una herramienta recomendada. Simplifica la clonación de aplicaciones de Android, facilitando los pasos descritos anteriormente.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}