hacktricks/mobile-pentesting/cordova-apps.md
2023-08-03 19:12:22 +00:00

92 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cordova 应用
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</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>
* 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中 **宣传你的公司** 吗?或者你想要获得 **PEASS 的最新版本或下载 HackTricks 的 PDF 版本** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter****关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
</details>
从文章 [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58) 中获取的信息。
## 基本信息
Apache Cordova 是一个流行的框架,允许你使用 JavaScript、HTML 和 CSS 创建混合应用Android 和 iOS
Cordova 的一个主要问题是它**没有默认的方法来保护**应用的**源代码**,不像 React Native。Cordova 应用的源代码没有默认的编译方法这使得代码篡改变得容易。Cordova 应用使用 WebView 来渲染应用,使用 HTML 和 JS即使将其编译为 APK 或 IPA源代码仍然可以被公开访问而 React Native 使用 JavaScript VM 来运行 JavaScript 代码。
### 克隆 Cordova 应用 <a href="#8f50" id="8f50"></a>
要创建一个 Cordova 应用,我们需要安装 NodeJS。除了 NodeJS我们还需要安装其他一些东西来完成构建过程如 Android SDK、Java JDK 和 Gradle。你可以参考[官方文档](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building)获取要求的列表。
在这个例子中,我们可以假设原始应用的名称是 `Bank.apk`,包名是 `com.android.bank`
解压 `bank.apk` 并打开 `bank/assets/www` 文件夹。我们可以查看 Cordova 应用的**完整源代码**。所有的 HTML 和 JS 代码都可以用来创建应用的克隆。我们还可以在 `bank/res/xml/config.xml` 中找到应用的配置文件。
现在我们可以创建一个新的 Cordova 应用项目:
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
现在我们需要将`bank/assets/www`中的所有文件和文件夹复制到`bank-new/www`中。
在复制源代码时,我们需要排除一些文件和文件夹,如`cordova_plugins.jscordova.jscordova-js-src/plugins/`。我们可以复制所有文件和文件夹,但排除上述提到的文件和文件夹。
在创建一个新的Cordova项目时我们需要说明应用是用于Android还是iOS。由于我们正在克隆Android应用我们需要为其添加一个Android平台。在Cordova中我们有平台版本每个版本都具有不同的功能和对Android API或Android版本的支持。
Android API和Cordova Android平台版本是不同的。您可以[查看](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/)平台版本的列表以及它们对Android API的支持。
要添加Cordova Android平台我们需要找出应用程序最初使用的版本。如果您使用不同的版本可能会遇到问题因为我们正在使用相同的源代码来克隆应用程序。您可以打开`cordova.js`文件并搜索`PLATFORM_VERSION_BUILD_LABEL`以找到应用程序使用的版本。
\
现在我们已经添加了Android平台支持我们可以添加应用程序使用的所有必需插件。在原始应用程序的`bank/assets/www/cordova_plugins.js`中,我们可以找到应用程序使用的所有插件的列表。我们需要逐个安装这些插件。在`cordova_plugins.js`文件中搜索`module.exports.metadata`。我们可以看到所有插件及其版本。
<figure><img src="https://miro.medium.com/v2/resize:fit:1124/1*Hap3DmxS6-1apNj5RfpC3g.png" alt="Cordova Plugins" height="570" width="562"><figcaption><p>Cordova插件</p></figcaption></figure>
我们需要使用以下命令逐个安装所有插件
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
{% hint style="warning" %}
如果在npm上找不到插件请在Github上搜索
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
{% endhint %}
编译应用程序之前,我们需要确保已经安装了所有的要求。
```bash
cd bank-new
cordova requirements
```
一旦我们准备好所有的设置我们就可以构建apk文件。
```bash
cd bank-new
cordova build android — packageType=apk
```
上述的构建命令将创建一个启用调试方法的apk这样我们就可以使用Google Chrome调试应用程序。在安装apk之前请确保对apk进行签名。如果应用程序具有代码篡改检测除非没有设置特定配置否则将被绕过。
### 自动化工具
[**MobSecco**](https://github.com/Anof-cyber/MobSecco)一个自动化克隆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>
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>