hacktricks/mobile-pentesting/android-app-pentesting/react-native-application.md
2023-08-03 19:12:22 +00:00

5.7 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7 复制的信息

React Native是一个移动应用程序框架最常用于通过使用React和本地平台功能来开发AndroidiOS应用程序。如今越来越流行在各个平台上使用React。
但是大多数情况下应用程序的核心逻辑位于React Native的JavaScript中可以在不使用dex2jar的情况下获得

步骤1确认应用程序是否是基于React Native框架构建的。

要检查这一点将APK文件重命名为zip扩展名然后使用以下命令将APK文件提取到一个新文件夹中

cp com.example.apk example-apk.zip
unzip -qq example-apk.zip -d ReactNative

浏览到新创建的ReactNative文件夹,并找到assets文件夹。在这个文件夹里,应该包含index.android.bundle。这个文件将以压缩格式包含所有的React JavaScript代码。React Native逆向工程

find . -print | grep -i ".bundle$"

Image for post

步骤2:在相同目录下创建一个名为index.html的文件,并在其中添加以下代码。

您可以将文件上传到https://spaceraccoon.github.io/webpack-exploder/,或按照以下步骤进行操作:

<script src="./index.android.bundle"></script>

Image for post

Google Chrome中打开index.html文件。打开开发者工具栏(OS X按Command+Option+JWindows按Control+Shift+J然后点击“Sources”。你应该能看到一个JavaScript文件分成文件夹和文件组成主要的捆绑包。

如果你能找到一个名为index.android.bundle.map的文件,你就能以未压缩的格式分析源代码。map文件包含了源映射,可以将压缩的标识符映射回原始代码。

第三步:搜索敏感凭证和终端点

在这个阶段,你需要识别敏感关键词来分析Javascript代码。React Native应用程序中常见的一种模式是使用第三方服务比如Firebase、AWS S3服务终端点、私钥等等。

在我的初始侦察过程我观察到应用程序使用了Dialogflow服务。所以基于此我搜索了与其配置相关的模式。幸运的是我在Javascript代码中找到了敏感的硬编码凭证

Image for post

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥