hacktricks/mobile-pentesting/cordova-apps.md

79 lines
6.1 KiB
Markdown

# Cordova Apps
{% 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 %}
**Für weitere Details siehe [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Dies ist eine Zusammenfassung:
Apache Cordova ist bekannt dafür, die Entwicklung von **hybriden Anwendungen** mit **JavaScript, HTML und CSS** zu ermöglichen. Es erlaubt die Erstellung von Android- und iOS-Anwendungen; jedoch fehlt ein standardmäßiger Mechanismus zum Schutz des Quellcodes der Anwendung. Im Gegensatz zu React Native kompiliert Cordova den Quellcode standardmäßig nicht, was zu Sicherheitsanfälligkeiten durch Code-Manipulation führen kann. Cordova verwendet WebView, um Anwendungen darzustellen, wodurch der HTML- und JavaScript-Code auch nach der Kompilierung in APK- oder IPA-Dateien sichtbar bleibt. React Native hingegen verwendet eine JavaScript-VM zur Ausführung von JavaScript-Code, was einen besseren Schutz des Quellcodes bietet.
### Klonen einer Cordova-Anwendung
Bevor Sie eine Cordova-Anwendung klonen, stellen Sie sicher, dass NodeJS zusammen mit anderen Voraussetzungen wie dem Android SDK, Java JDK und Gradle installiert ist. Die offizielle Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) bietet eine umfassende Anleitung für diese Installationen.
Betrachten Sie ein Beispielanwendung namens `Bank.apk` mit dem Paketnamen `com.android.bank`. Um auf den Quellcode zuzugreifen, entpacken Sie `bank.apk` und navigieren Sie zum Ordner `bank/assets/www`. Dieser Ordner enthält den vollständigen Quellcode der Anwendung, einschließlich HTML- und JS-Dateien. Die Konfiguration der Anwendung finden Sie in `bank/res/xml/config.xml`.
Um die Anwendung zu klonen, befolgen Sie diese Schritte:
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Kopiere den Inhalt von `bank/assets/www` nach `bank-new/www`, wobei `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` und das Verzeichnis `plugins/` ausgeschlossen werden.
Gib die Plattform (Android oder iOS) an, wenn du ein neues Cordova-Projekt erstellst. Für das Klonen einer Android-App füge die Android-Plattform hinzu. Beachte, dass die Plattformversionen von Cordova und die Android-API-Level unterschiedlich sind. Siehe die Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) für Details zu Plattformversionen und unterstützten Android-APIs.
Um die geeignete Cordova Android-Plattformversion zu bestimmen, überprüfe das `PLATFORM_VERSION_BUILD_LABEL` in der `cordova.js`-Datei der ursprünglichen Anwendung.
Nachdem die Plattform eingerichtet ist, installiere die erforderlichen Plugins. Die `bank/assets/www/cordova_plugins.js`-Datei der ursprünglichen Anwendung listet alle Plugins und deren Versionen auf. Installiere jedes Plugin einzeln, wie unten gezeigt:
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
Wenn ein Plugin nicht auf npm verfügbar ist, kann es von GitHub bezogen werden:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
Stellen Sie sicher, dass alle Voraussetzungen erfüllt sind, bevor Sie kompilieren:
```bash
cd bank-new
cordova requirements
```
Um die APK zu erstellen, verwenden Sie den folgenden Befehl:
```bash
cd bank-new
cordova build android — packageType=apk
```
Dieser Befehl generiert ein APK mit der Debug-Option aktiviert, was das Debuggen über Google Chrome erleichtert. Es ist entscheidend, das APK vor der Installation zu signieren, insbesondere wenn die Anwendung Mechanismen zur Erkennung von Code-Manipulationen enthält.
### Automatisierungstool
Für diejenigen, die den Klonprozess automatisieren möchten, ist **[MobSecco](https://github.com/Anof-cyber/MobSecco)** ein empfohlenes Tool. Es vereinfacht das Klonen von Android-Anwendungen und vereinfacht die oben beschriebenen Schritte.
{% hint style="success" %}
Lerne & übe 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">\
Lerne & übe 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>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos sendest.
</details>
{% endhint %}