GCP - Firebase Enum

Support HackTricks

Die Firebase Realtime-Datenbank 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:

  7. Zugriff verweigert“: Das bedeutet, dass Sie nicht darauf zugreifen können, also ist es gut konfiguriert.

  8. null“-Antwort oder eine Menge von JSON-Daten: Das bedeutet, dass die Datenbank öffentlich ist und Sie mindestens Lesezugriff haben.

  9. 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 dies wird gemeldet.

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

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:

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

Um andere Aktionen in der Datenbank zu testen, wie das Schreiben in die Datenbank, siehe die Pyrebase-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

Möglicherweise können Sie auf einige interessante Informationen zugreifen.

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

Unterstützen Sie HackTricks

Last updated