GCP - Firebase Enum

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Η Firebase Realtime Database είναι μια βάση δεδομένων NoSQL που φιλοξενείται στο cloud και σας επιτρέπει να αποθηκεύετε και να συγχρονίζετε δεδομένα μεταξύ των χρηστών σας σε πραγματικό χρόνο. Μάθετε περισσότερα.

Απαρίθμηση χωρίς πιστοποίηση

Ορισμένα σημεία πρόσβασης Firebase μπορεί να βρεθούν σε κινητές εφαρμογές. Είναι δυνατόν το σημείο πρόσβασης Firebase που χρησιμοποιείται να είναι κακά διαμορφωμένο και να παρέχει προνόμια ανάγνωσης (και εγγραφής) σε όλους.

Αυτή είναι η κοινή μεθοδολογία για την αναζήτηση και εκμετάλλευση κακά διαμορφωμένων βάσεων δεδομένων Firebase:

  1. Αποκτήστε το APK της εφαρμογής, μπορείτε να χρησιμοποιήσετε οποιοδήποτε εργαλείο για να αποκτήσετε το APK από τη συσκευή για αυτήν την απόδειξη. Μπορείτε να χρησιμοποιήσετε το "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e

  2. Αποσυμπιέστε το APK χρησιμοποιώντας το apktool, ακολουθήστε την παρακάτω εντολή για να εξαγάγετε τον πηγαίο κώδικα από το APK.

  3. Πηγαίνετε στο res/values/strings.xml και αναζητήστε αυτό και αναζητήστε τη λέξη-κλειδί "firebase"

  4. Μπορείτε να βρείτε κάτι σαν αυτήν τη διεύθυνση URL "https://xyz.firebaseio.com/"

  5. Στη συνέχεια, πηγαίνετε στον περιηγητή και πλοηγηθείτε στην εύρεση URL: https://xyz.firebaseio.com/.json

  6. Μπορεί να εμφανιστούν 2 είδη απαντήσεων:

  7. "Άρνηση πρόσβασης": Αυτό σημαίνει ότι δεν μπορείτε να έχετε πρόσβαση, οπότε είναι καλά διαμορφωμένο

  8. Απάντηση "null" ή ένα σύνολο δεδομένων JSON: Αυτό σημαίνει ότι η βάση δεδομένων είναι δημόσια και έχετε τουλάχιστον πρόσβαση ανάγνωσης.

  9. Σε αυτήν την περίπτωση, μπορείτε να ελέγξετε τα προνόμια εγγραφής, μια εκμετάλλευση για να ελέγξετε τα προνόμια εγγραφής μπορεί να βρεθεί εδώ: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Ενδιαφέρουσα σημείωση: Όταν αναλύετε μια κινητή εφαρμογή με το MobSF, αν βρει μια βάση δεδομένων firebase, θα ελέγξει εάν αυτή είναι δημόσια διαθέσιμη και θα το ειδοποιήσει.

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το Firebase Scanner, ένα script python που αυτοματοποιεί την παραπάνω εργασία όπως φαίνεται παρακάτω:

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Απαρίθμηση με πιστοποίηση

Εάν έχετε διαπιστευτήρια για πρόσβαση στη βάση δεδομένων Firebase, μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το Baserunner για να έχετε πιο εύκολη πρόσβαση στις αποθηκευμένες πληροφορίες. Ή ένα σενάριο όπως το παρακάτω:

#Taken from https://blog.assetnote.io/bug-bounty/2020/02/01/expanding-attack-surface-react-native/
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())

Για να δοκιμάσετε άλλες ενέργειες στη βάση δεδομένων, όπως η εγγραφή στη βάση δεδομένων, ανατρέξτε στην τεκμηρίωση του Pyrebase που μπορείτε να βρείτε εδώ.

Πρόσβαση σε πληροφορίες με APPID και API Key

Εάν αποκωδικοποιήσετε την εφαρμογή iOS και ανοίξετε το αρχείο GoogleService-Info.plist και βρείτε το API Key και το APP ID:

  • API KEY AIzaSyAs1[...]

  • APP ID 1:612345678909:ios:c212345678909876

Μπορείτε να έχετε πρόσβαση σε ορισμένες ενδιαφέρουσες πληροφορίες.

Αίτηση

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"}'

Αναφορές

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated