hacktricks/mobile-pentesting/cordova-apps.md

96 lines
6.6 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><strong>从零开始学习 AWS 黑客攻击成为英雄,通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
支持 HackTricks 的其他方式:
* 如果您想在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 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.js, cordova.js, cordova-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>Cordva 插件</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><strong>从零开始学习AWS黑客攻击直到成为专家通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您希望在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>