GCP - Firebase Enum
La Base de Datos en Tiempo Real de Firebase es una base de datos NoSQL alojada en la nube que te permite almacenar y sincronizar datos entre tus usuarios en tiempo real. Aprende más.
Enumeración sin autenticación
Algunos endpoints de Firebase podrían encontrarse en aplicaciones móviles. Es posible que el endpoint de Firebase utilizado esté configurado de manera deficiente otorgando privilegios de lectura (y escritura) a todos.
Esta es la metodología común para buscar y explotar bases de datos de Firebase mal configuradas:
Obtener el APK de la aplicación, puedes usar cualquier herramienta para obtener el APK del dispositivo para este POC. Puedes usar "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
Descompilar el APK usando apktool, sigue el siguiente comando para extraer el código fuente del APK.
Ve a res/values/strings.xml y busca esto y busca la palabra "firebase"
Puedes encontrar algo como esta URL "https://xyz.firebaseio.com/"
A continuación, ve al navegador y navega a la URL encontrada: https://xyz.firebaseio.com/.json
Pueden aparecer 2 tipos de respuestas:
"Permiso Denegado": Esto significa que no puedes acceder, por lo que está bien configurado
Respuesta "null" o un montón de datos JSON: Esto significa que la base de datos es pública y al menos tienes acceso de lectura.
En este caso, podrías verificar los privilegios de escritura, se puede encontrar un exploit para probar los privilegios de escritura aquí: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit
Nota interesante: Al analizar una aplicación móvil con MobSF, si encuentra una base de datos de firebase, verificará si esta está disponible públicamente y lo notificará.
Alternativamente, puedes usar Firebase Scanner, un script en python que automatiza la tarea anterior como se muestra a continuación:
Enumeración Autenticada
Si tienes credenciales para acceder a la base de datos de Firebase, puedes utilizar una herramienta como Baserunner para acceder de manera más sencilla a la información almacenada. O un script como el siguiente:
Acceso a información con APPID y API Key
Si descompilas la aplicación de iOS y abres el archivo GoogleService-Info.plist
y encuentras la API Key y el APP ID:
API KEY AIzaSyAs1[...]
APP ID 1:612345678909:ios:c212345678909876
Podrías acceder a información interesante
Solicitud
curl -v -X POST "https://firebaseremoteconfig.googleapis.com/v1/projects/612345678909/namespaces/firebase:fetch?key=AIzaSyAs1[...]" -H "Content-Type: application/json" --data '{"appId": "1:612345678909:ios:c212345678909876", "appInstanceId": "PROD"}'
Referencias
Last updated