tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
An谩lisis de Aplicaciones React Native
Para confirmar si la aplicaci贸n fue construida sobre el framework React Native, sigue estos pasos:
-
Cambia el nombre del archivo APK con una extensi贸n zip y extr谩elo a una nueva carpeta usando el comando
cp com.example.apk example-apk.zip
yunzip -qq example-apk.zip -d ReactNative
. -
Navega a la carpeta ReactNative reci茅n creada y localiza la carpeta de assets. Dentro de esta carpeta, deber铆as encontrar el archivo
index.android.bundle
, que contiene el JavaScript de React en un formato minificado. -
Usa el comando
find . -print | grep -i ".bundle$"
para buscar el archivo JavaScript.
C贸digo Javascript
Si al revisar el contenido de index.android.bundle
encuentras el c贸digo JavaScript de la aplicaci贸n (incluso si est谩 minificado), puedes analizarlo para encontrar informaci贸n sensible y vulnerabilidades.
Dado que el bundle contiene en realidad todo el c贸digo JS de la aplicaci贸n, es posible dividirlo en diferentes archivos (potencialmente facilitando su ingenier铆a inversa) usando la herramienta react-native-decompiler.
Webpack
Para analizar m谩s a fondo el c贸digo JavaScript, puedes subir el archivo a https://spaceraccoon.github.io/webpack-exploder/ o seguir estos pasos:
- Crea un archivo llamado
index.html
en el mismo directorio con el siguiente c贸digo:
<script src="./index.android.bundle"></script>
-
Abre el archivo
index.html
en Google Chrome. -
Abre la Developer Toolbar presionando Command+Option+J para OS X o Control+Shift+J para Windows.
-
Haz clic en "Sources" en la Developer Toolbar. Deber铆as ver un archivo JavaScript que est谩 dividido en carpetas y archivos, formando el paquete principal.
Si encuentras un archivo llamado index.android.bundle.map
, podr谩s analizar el c贸digo fuente en un formato no minificado. Los archivos de mapa contienen mapeo de origen, lo que te permite mapear identificadores minificados.
Para buscar credenciales sensibles y endpoints, sigue estos pasos:
-
Identifica palabras clave sensibles para analizar el c贸digo JavaScript. Las aplicaciones de React Native a menudo utilizan servicios de terceros como Firebase, endpoints de servicio AWS S3, claves privadas, etc.
-
En este caso espec铆fico, se observ贸 que la aplicaci贸n estaba utilizando el servicio Dialogflow. Busca un patr贸n relacionado con su configuraci贸n.
-
Fue afortunado que se encontraran credenciales sensibles codificadas en el c贸digo JavaScript durante el proceso de reconocimiento.
Cambiar el c贸digo JS y reconstruir
En este caso, cambiar el c贸digo es f谩cil. Solo necesitas renombrar la aplicaci贸n para usar la extensi贸n .zip
y extraerla. Luego puedes modificar el c贸digo JS dentro de este paquete y reconstruir la aplicaci贸n. Esto deber铆a ser suficiente para permitirte inyectar c贸digo en la aplicaci贸n con fines de prueba.
##聽C贸digo de bytes de Hermes
Si el paquete contiene c贸digo de bytes de Hermes, no podr谩s acceder al c贸digo Javascript de la aplicaci贸n (ni siquiera a la versi贸n minificada).
Puedes verificar si el paquete contiene c贸digo de bytes de Hermes ejecutando el siguiente comando:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
Sin embargo, puedes usar las herramientas hbctool, hermes-dec o hermes_rs para desensamblar el bytecode y tambi茅n para decompilarlo a alg煤n c贸digo JS pseudo. Para hacer esto, por ejemplo, estos comandos:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
Cambiar c贸digo y reconstruir
Idealmente, deber铆as poder modificar el c贸digo desensamblado (cambiando una comparaci贸n, un valor o lo que necesites modificar) y luego reconstruir el bytecode y luego reconstruir la aplicaci贸n.
La herramienta hbctool soporta desensamblar el paquete y volver a construirlo despu茅s de que se hayan realizado los cambios, sin embargo, solo soporta versiones antiguas del bytecode de Hermes.
La herramienta hermes-dec no soporta la reconstrucci贸n del bytecode.
La herramienta hermes_rs soporta la reconstrucci贸n del bytecode, pero en realidad es una biblioteca y no una herramienta de l铆nea de comandos.
An谩lisis Din谩mico
Podr铆as intentar analizar din谩micamente la aplicaci贸n usando Frida para habilitar el modo desarrollador de la aplicaci贸n React y usar react-native-debugger
para conectarte a ella. Sin embargo, para esto aparentemente necesitas el c贸digo fuente de la aplicaci贸n. Puedes encontrar m谩s informaci贸n sobre esto en https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.
Referencias
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.