hacktricks/mobile-pentesting/cordova-apps.md

90 lines
8.6 KiB
Markdown

# Applications Cordova
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Informations tirées de l'article [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)
## Informations de base
Apache Cordova est un framework populaire qui vous permet de **créer des applications hybrides** (Android et iOS) en utilisant **JavaScript, HTML et CSS**.
L'un des principaux problèmes avec Cordova est qu'il **ne dispose pas d'une méthode par défaut pour sécuriser** la **source** de l'application, contrairement à react-native. La source de l'application Cordova n'a pas de méthode par défaut pour la compiler, ce qui facilite la manipulation du code. L'application Cordova utilise WebView pour rendre l'application en utilisant HTML et JS, ce qui révèle le code source même après sa compilation en APK ou IPA, tandis que react native utilise JavaScript VM pour exécuter le code JavaScript.
### Clonage d'une application Cordova <a href="#8f50" id="8f50"></a>
Pour créer une application Cordova, nous devons installer NodeJS. En plus de NodeJS, nous avons besoin de quelques autres éléments installés pour terminer le processus de construction, tels que Android SDK, Java JDK et Gradle. Vous pouvez suivre la [documentation officielle](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) pour la liste des exigences.
Pour cet exemple, nous pouvons supposer que le nom de l'application d'origine est `Bank.apk` et le nom du package `com.android.bank`
Décompressez le fichier `bank.apk` et ouvrez le dossier `bank/assets/www`. Nous pouvons voir la **source complète de l'application Cordova**. Tout le code HTML et JS peut être utilisé pour créer un clone de l'application. Nous pouvons également trouver le fichier de configuration de l'application dans `bank/res/xml/config.xml`.
Maintenant, nous pouvons créer un nouveau projet d'application Cordova :
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Maintenant, nous devons copier tous les fichiers et dossiers de `bank/assets/www` vers `bank-new/www`.
Lorsque nous copions le code source, nous devons exclure quelques fichiers et dossiers tels que `cordova_plugins.js, cordova.js, cordova-js-src/, plugins/`. Nous pouvons copier tous les fichiers et dossiers en excluant ceux mentionnés ci-dessus.
Lorsque nous créons un nouveau projet Cordova, nous devons préciser s'il s'agit d'une application Android ou iOS. Étant donné que nous clonons l'application Android, nous devons y ajouter une plateforme Android. Dans Cordova, nous avons les versions de plateforme, chaque version ayant différentes fonctionnalités et prise en charge des API Android ou des versions Android.
Les versions de l'API Android et de la plateforme Android de Cordova sont différentes. Vous pouvez [consulter](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) la liste des versions de plateforme et leur prise en charge des API Android.
Pour ajouter la plateforme Android de Cordova, nous devons déterminer quelle version a été utilisée à l'origine par l'application. Si vous utilisez une version différente, vous pourriez rencontrer des problèmes car nous utilisons le même code source pour cloner l'application. Vous pouvez ouvrir le fichier `cordova.js` et rechercher `PLATFORM_VERSION_BUILD_LABEL` pour trouver la version utilisée par l'application.
Maintenant que nous avons ajouté la prise en charge de la plateforme Android, nous pouvons ajouter tous les plugins requis utilisés par l'application. Dans l'application d'origine `bank/assets/www/cordova_plugins.js`, nous pouvons trouver une liste de tous les plugins utilisés par l'application. Nous devons installer ces plugins un par un. Recherchez `module.exports.metadata` dans le fichier `cordova_plugins.js`. Nous pouvons voir tous les plugins avec leurs versions également.
<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 Cordova</p></figcaption></figure>
Nous devons installer tous les plugins un par un à l'aide de la commande suivante
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
{% hint style="warning" %}
Si un plugin n'est pas disponible dans npm, recherchez-le sur Github :
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
{% endhint %}
Pour compiler l'application, nous devons nous assurer d'avoir déjà installé toutes les exigences nécessaires.
```bash
cd bank-new
cordova requirements
```
Une fois que nous avons terminé toutes les configurations nécessaires, nous pouvons construire l'APK.
```bash
cd bank-new
cordova build android — packageType=apk
```
La commande de construction ci-dessus créera un fichier apk avec la méthode de débogage activée, ce qui nous permettra de déboguer l'application à l'aide de Google Chrome. Avant d'installer le fichier apk, assurez-vous de le signer. Si l'application dispose d'une détection de modification de code, elle sera contournée à moins qu'aucune configuration spécifique ne soit définie.
### Outil automatique
[**MobSecco**](https://github.com/Anof-cyber/MobSecco) : Un outil qui automatise l'ensemble du processus de clonage de l'application Android.
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>