GCP - Firebase Enum
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Firebase
Il Firebase Realtime Database è un database NoSQL ospitato nel cloud che consente di memorizzare e sincronizzare i dati tra gli utenti in tempo reale. Scopri di più.
Enum non autenticato
Alcuni endpoint Firebase potrebbero trovarsi in applicazioni mobili. È possibile che l'endpoint Firebase utilizzato sia configurato male concedendo a tutti i privilegi di lettura (e scrittura) su di esso.
Questa è la metodologia comune per cercare e sfruttare database Firebase mal configurati:
- Ottieni l'APK dell'app, puoi utilizzare uno qualsiasi degli strumenti per ottenere l'APK dal dispositivo per questo POC.
Puoi usare “APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e - Decompila l'APK usando apktool, segui il comando qui sotto per estrarre il codice sorgente dall'APK.
- Vai a res/values/strings.xml e cerca questa 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:
- “Permission Denied”: Questo significa che non puoi accedervi, quindi è ben configurato
- Risposta “null” o un insieme di dati JSON: Questo significa che il database è pubblico e hai almeno accesso in lettura.
- In questo caso, potresti controllare 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 controllerà se questo è pubblicamente disponibile e lo notificherà.
In alternativa, puoi utilizzare Firebase Scanner, uno script python che automatizza il compito sopra come mostrato di seguito:
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>
Enum Autenticato
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:
#Taken from https://blog.assetnote.io/bug-bounty/2020/02/01/expanding-attack-surface-react-native/
#Install pyrebase: pip install pyrebase4
import pyrebase
config = {
"apiKey": "FIREBASE_API_KEY",
"authDomain": "FIREBASE_AUTH_DOMAIN_ID.firebaseapp.com",
"databaseURL": "https://FIREBASE_AUTH_DOMAIN_ID.firebaseio.com",
"storageBucket": "FIREBASE_AUTH_DOMAIN_ID.appspot.com",
}
firebase = pyrebase.initialize_app(config)
db = firebase.database()
print(db.get())
Per testare altre azioni sul database, come la scrittura nel database, fare riferimento alla documentazione di Pyrebase4 che può essere trovata 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
- https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/
- https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.