GCP - Firebase Enum

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Firebase

Die Firebase Realtime Database ist eine cloudbasierte NoSQL-Datenbank, die es Ihnen ermöglicht, Daten in Echtzeit zwischen Ihren Benutzern zu speichern und zu synchronisieren. Erfahren Sie mehr.

Unauthenticated Enum

Einige Firebase-Endpunkte könnten in mobilen Anwendungen gefunden werden. Es ist möglich, dass der verwendete Firebase-Endpunkt schlecht konfiguriert ist und jedem Berechtigungen zum Lesen (und Schreiben) gewährt.

Dies ist die gängige Methodik, um schlecht konfigurierte Firebase-Datenbanken zu suchen und auszunutzen:

  1. Holen Sie sich die APK der App, Sie können eines der Tools verwenden, um die APK von dem Gerät für diesen POC zu erhalten.
    Sie können “APK Extractor” verwenden https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
  2. Decompilieren Sie die APK mit apktool, folgen Sie dem untenstehenden Befehl, um den Quellcode aus der APK zu extrahieren.
  3. Gehen Sie zu res/values/strings.xml und suchen Sie nach diesem und suchen Sie nach dem Schlüsselwort “firebase
  4. Sie könnten etwas wie diese URL finden “https://xyz.firebaseio.com/
  5. Gehen Sie als Nächstes zum Browser und navigieren Sie zur gefundenen URL: https://xyz.firebaseio.com/.json
  6. Es können 2 Arten von Antworten erscheinen:
    1. Permission Denied”: Das bedeutet, dass Sie keinen Zugriff darauf haben, also ist es gut konfiguriert.
    2. null” Antwort oder eine Menge JSON-Daten: Das bedeutet, dass die Datenbank öffentlich ist und Sie mindestens Lesezugriff haben.
      1. In diesem Fall könnten Sie nach Schreibberechtigungen suchen, ein Exploit, um Schreibberechtigungen zu testen, kann hier gefunden werden: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Interessante Anmerkung: Wenn Sie eine mobile Anwendung mit MobSF analysieren, wird überprüft, ob eine Firebase-Datenbank öffentlich verfügbar ist, und es wird eine Benachrichtigung ausgegeben.

Alternativ können Sie Firebase Scanner verwenden, ein Python-Skript, das die oben genannte Aufgabe automatisiert, wie unten gezeigt:

bash
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Authenticated Enum

Wenn Sie über Anmeldeinformationen zum Zugriff auf die Firebase-Datenbank verfügen, können Sie ein Tool wie Baserunner verwenden, um einfacher auf die gespeicherten Informationen zuzugreifen. Oder ein Skript wie das folgende:

python
#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())

Um andere Aktionen in der Datenbank zu testen, wie z.B. das Schreiben in die Datenbank, siehe die Pyrebase4-Dokumentation, die hier zu finden ist.

Zugriff auf Informationen mit APPID und API-Schlüssel

Wenn Sie die iOS-Anwendung dekompilieren und die Datei GoogleService-Info.plist öffnen und den API-Schlüssel und die APP-ID finden:

  • API-SCHLÜSSEL AIzaSyAs1[...]
  • APP-ID 1:612345678909:ios:c212345678909876

Sie könnten in der Lage sein, einige interessante Informationen zuzugreifen.

Anfrage

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

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks