4.4 KiB
GCP - Firebase Enum
{{#include ../../../banners/hacktricks-training.md}}
Firebase
Die Firebase Realtime Database is 'n wolk-gehoste NoSQL-databasis wat jou toelaat om data tussen jou gebruikers in realtime te stoor en te sinkroniseer. Leer meer.
Ongeauthentiseerde Enum
Sommige Firebase eindpunte kan in mobiele toepassings gevind word. Dit is moontlik dat die Firebase eindpunt wat gebruik word sleg geconfigureer is en almal toegangsregte gee om dit te lees (en te skryf).
Dit is die algemene metodologie om swak geconfigureerde Firebase-databasisse te soek en te benut:
- Kry die APK van die app, jy kan enige van die gereedskap gebruik om die APK van die toestel vir hierdie POC te kry.
Jy kan “APK Extractor” gebruik https://play.google.com/store/apps/details?id=com.ext.ui&hl=e - Decompile die APK met apktool, volg die onderstaande opdrag om die bronkode uit die APK te onttrek.
- Gaan na die res/values/strings.xml en soek vir hierdie en soek vir die “firebase” sleutelwoord
- Jy mag iets soos hierdie URL “https://xyz.firebaseio.com/” vind
- Gaan dan na die blaaier en navigeer na die gevonde URL: https://xyz.firebaseio.com/.json
- 2 tipes antwoorde kan verskyn:
- “Toegang geweier”: Dit beteken dat jy nie toegang kan kry nie, so dit is goed geconfigureer
- “null” antwoord of 'n klomp JSON data: Dit beteken dat die databasis publiek is en jy ten minste lees toegang het.
- In hierdie geval kan jy skryfregte nagaan, 'n eksploit om skryfregte te toets kan hier gevind word: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit
Interessante nota: Wanneer 'n mobiele toepassing met MobSF geanaliseer word, as dit 'n firebase databasis vind, sal dit nagaan of dit publiek beskikbaar is en dit sal kennisgee.
Alternatiewelik kan jy Firebase Scanner gebruik, 'n python skrip wat die taak hierbo outomatiseer soos hieronder getoon:
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>
Geverifieerde Enum
As jy akrediteer is om toegang tot die Firebase-databasis te verkry, kan jy 'n hulpmiddel soos Baserunner gebruik om die gestoor inligting makliker te bekom. Of 'n skrif soos die volgende:
#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())
Om ander aksies op die databasis te toets, soos om na die databasis te skryf, verwys na die Pyrebase4 dokumentasie wat hier gevind kan word.
Toegang inligting met APPID en API Sleutel
As jy die iOS toepassing dekompileer en die lêer GoogleService-Info.plist oopmaak en jy vind die API Sleutel en APP ID:
- API SLEUTEL AIzaSyAs1[...]
- APP ID 1:612345678909:ios:c212345678909876
Jy mag in staat wees om 'n paar interessante inligting te bekom
Versoek
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"}'
Verwysings
- https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/
- https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1
{{#include ../../../banners/hacktricks-training.md}}