hacktricks/mobile-pentesting/android-app-pentesting/react-native-application.md
2023-06-03 01:46:23 +00:00

6.2 KiB

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

Información copiada de https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7

React Native es un marco de aplicación móvil que se utiliza principalmente para desarrollar aplicaciones para Android e iOS al permitir el uso de React y las capacidades de la plataforma nativa. En estos días, se ha vuelto cada vez más popular usar React en todas las plataformas.
Pero la mayor parte del tiempo, la lógica principal de la aplicación se encuentra en el JavaScript de React Native que se puede obtener sin necesidad de usar dex2jar.

Paso 1: Confirmemos si la aplicación se construyó en el marco de React Native.

Para comprobar esto, renombra el APK con la extensión zip y luego extrae el APK a una nueva carpeta usando el siguiente comando.

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

Navegue hasta la carpeta ReactNative recién creada y encuentre la carpeta assets. Dentro de esta carpeta, debería contener index.android.bundle. Este archivo contendrá todo el código JavaScript de React en un formato minificado. Ingeniería inversa de React Native

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

Imagen para el post

Paso 2: Crear un archivo llamado index.html en el mismo directorio con el siguiente código.

Puedes subir el archivo a https://spaceraccoon.github.io/webpack-exploder/ o continuar con los siguientes pasos:

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

Imagen para publicación

Abre el archivo index.html en Google Chrome. Abre la barra de herramientas de desarrollador (Command+Option+J para OS X o Control+Shift+J para Windows), y haz clic en "Sources". Deberías ver un archivo JavaScript, dividido en carpetas y archivos que conforman el paquete principal.

Si puedes encontrar un archivo llamado index.android.bundle.map, podrás analizar el código fuente en un formato no minimizado. Los archivos map contienen el mapeo de origen que te permite mapear identificadores minimizados.

Paso 3: busca credenciales y puntos finales sensibles

En esta fase, debes identificar las palabras clave sensibles para analizar el código Javascript. Un patrón popular en las aplicaciones React Native es el uso de servicios de terceros como Firebase, puntos finales de servicios AWS s3, claves privadas, etc.

Durante mi proceso de reconocimiento inicial, he observado que la aplicación utiliza el servicio Dialogflow. Por lo tanto, basándome en esto, he buscado un patrón relacionado con su configuración. Afortunadamente, pude encontrar credenciales sensibles codificadas en el código Javascript.

Imagen para publicación

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