GCP - Firebase Enum
Il database in tempo reale di Firebase è un database NoSQL ospitato su cloud che consente di archiviare e sincronizzare i dati tra gli utenti in tempo reale. Scopri di più.
Enumerazione non autenticata
Alcuni endpoint di Firebase potrebbero essere trovati nelle applicazioni mobili. È possibile che l'endpoint Firebase utilizzato sia configurato male concedendo a tutti i privilegi di lettura (e scrittura).
Questa è la metodologia comune per cercare e sfruttare database Firebase configurati in modo errato:
Ottieni l'APK dell'applicazione, puoi utilizzare uno qualsiasi degli strumenti per ottenere l'APK dal dispositivo per questa prova di concetto. Puoi utilizzare "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
Decompila l'APK utilizzando apktool, segui il comando seguente per estrarre il codice sorgente dall'APK.
Vai a res/values/strings.xml e cerca questo e cerca la parola chiave "firebase"
Potresti trovare qualcosa come questo URL "https://xyz.firebaseio.com/"
Successivamente, vai al browser e naviga all'URL trovato: https://xyz.firebaseio.com/.json
Possono apparire 2 tipi di risposte:
"Permesso negato": ciò significa che non puoi accedervi, quindi è ben configurato
Risposta "null" o un insieme di dati JSON: ciò significa che il database è pubblico e hai almeno accesso in lettura.
In questo caso, potresti verificare i privilegi di scrittura, un exploit per testare i privilegi di scrittura può essere trovato qui: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit
Nota interessante: Quando si analizza un'applicazione mobile con MobSF, se trova un database Firebase, verificherà se questo è accessibile pubblicamente e lo segnalerà.
In alternativa, puoi utilizzare Firebase Scanner, uno script python che automatizza il compito sopra mostrato come segue:
Enumerazione Autenticata
Se hai le credenziali per accedere al database Firebase, puoi utilizzare uno strumento come Baserunner per accedere più facilmente alle informazioni memorizzate. Oppure uno script come il seguente:
Per testare altre azioni sul database, come la scrittura nel database, consulta la documentazione di Pyrebase che puoi trovare qui.
Accesso alle informazioni con APPID e API Key
Se decompili l'applicazione iOS e apri il file GoogleService-Info.plist
e trovi la API Key e l'APP ID:
API KEY AIzaSyAs1[...]
APP ID 1:612345678909:ios:c212345678909876
Potresti essere in grado di accedere ad alcune informazioni interessanti
Richiesta
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"}'
Riferimenti
Last updated