hacktricks/mobile-pentesting/cordova-apps.md

97 lines
7.4 KiB
Markdown
Raw Normal View History

# Aplicaciones Cordova
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Información tomada del post [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)
## Información Básica
Apache Cordova es un marco de trabajo popular que permite **crear aplicaciones híbridas** (Android & iOS) usando **JavaScript, HTML y CSS**.
Uno de los principales problemas con Cordova es que **no incluye un método por defecto para asegurar** el **código fuente** de la aplicación, a diferencia de react-native. El código fuente de la aplicación Cordova no tiene un método por defecto para compilarlo, lo que facilita la **manipulación del código**. La aplicación Cordova utiliza WebView para renderizar la aplicación usando HTML y JS, lo que revela el código fuente incluso después de compilarlo a APK o IPA, mientras que react native utiliza JavaScript VM para ejecutar el código JavaScript.
### Clonando la Aplicación Cordova <a href="#8f50" id="8f50"></a>
Para crear una app Cordova necesitamos instalar NodeJS. Además de NodeJS, necesitamos instalar algunas otras cosas para completar el proceso de construcción como Android SDK, Java JDK y Gradle. Puedes seguir la [documentación oficial](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) para la lista de requisitos.
Para este ejemplo, podemos asumir que el nombre de la aplicación original es `Bank.apk` y el nombre del paquete `com.android.bank`
Descomprime el `bank.apk` y abre la carpeta `bank/assets/www`. Podemos ver el **código fuente completo de la aplicación Cordova**. Todo el código HTML y JS se puede utilizar para crear un clon de la aplicación. También podemos encontrar el archivo de configuración de la aplicación en `bank/res/xml/config.xml`.
Ahora podemos crear un nuevo proyecto de aplicación Cordova:
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Ahora necesitamos copiar todos los archivos y carpetas de `bank/assets/www` a `bank-new/www.`
Al copiar el código fuente, necesitamos excluir algunos archivos y carpetas como `cordova_plugins.js, cordova.js, cordova-js-src/, plugins/`. Podemos copiar todos los archivos y carpetas excluyendo los mencionados anteriormente.
Cuando creamos un nuevo proyecto Cordova, necesitamos especificar si la aplicación es para Android o iOS. Dado que estamos clonando la aplicación Android, necesitamos agregar una plataforma Android a la misma. En Cordova tenemos las versiones de la plataforma, cada versión tiene diferentes características y soporte para las APIs de Android o versiones de Android.
Las versiones de la API de Android y la plataforma Android de Cordova son diferentes. Puedes [consultar](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) la lista de versiones de la plataforma y su soporte para las APIs de Android.
Para agregar la plataforma Android de Cordova, necesitamos averiguar qué versión fue utilizada originalmente por la aplicación. Si usas una versión diferente, podrías enfrentar problemas ya que estamos utilizando el mismo código fuente para clonar la aplicación. Puedes abrir el archivo `cordova.js` y buscar `PLATFORM_VERSION_BUILD_LABEL` para encontrar la versión utilizada por la aplicación.
\
Ahora que hemos agregado soporte para la plataforma Android, podemos agregar todos los plugins requeridos utilizados por la aplicación. En la aplicación original `bank/assets/www/cordova_plugins.js`, podemos encontrar una lista de todos los plugins utilizados por la aplicación. Necesitamos instalar esos plugins uno por uno. Busca `module.exports.metadata` en el archivo `cordova_plugins.js`. También podemos ver todos los plugins con sus versiones.
<figure><img src="https://miro.medium.com/v2/resize:fit:1124/1*Hap3DmxS6-1apNj5RfpC3g.png" alt="Cordova Plugins" height="570" width="562"><figcaption><p>Plugins de Cordova</p></figcaption></figure>
Necesitamos instalar todos los plugins uno por uno con la ayuda del siguiente comando
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
{% hint style="warning" %}
Si un plugin no está disponible en npm, búscalo en Github:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
{% endhint %}
Para compilar la aplicación, necesitamos asegurarnos de tener todos los requisitos ya instalados.
```bash
cd bank-new
cordova requirements
```
Una vez que tengamos todo el entorno preparado, podemos construir el apk.
```bash
cd bank-new
cordova build android — packageType=apk
```
El comando de construcción anterior creará un apk con el método de depuración habilitado, lo que nos permite depurar la aplicación usando Google Chrome. Antes de instalar el apk, asegúrate de firmar el apk. Si la aplicación tiene detección de manipulación de código, será eludida a menos que no haya una configuración específica establecida.
### Herramienta Automática
[**MobSecco**](https://github.com/Anof-cyber/MobSecco): Una herramienta que automatiza el proceso completo de clonar la aplicación Android.
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>