GCP - Firebase Enum

Erlernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Die Firebase-Echtzeitdatenbank ist eine cloudbasierte NoSQL-Datenbank, mit der Sie Daten zwischen Ihren Benutzern in Echtzeit speichern und synchronisieren können. Erfahren Sie mehr.

Nicht authentifizierte Enumeration

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 übliche 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 vom 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. Dekompilieren Sie die APK mit apktool, folgen Sie dem unten stehenden 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. Möglicherweise finden Sie eine URL wie diese "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": Dies bedeutet, dass Sie keinen Zugriff darauf haben, daher ist es gut konfiguriert

  8. Antwort "null" oder eine Menge JSON-Daten: Dies bedeutet, dass die Datenbank öffentlich ist und Sie zumindest Lesezugriff haben.

  9. In diesem Fall könnten Sie Schreibberechtigungen überprüfen, ein Exploit zum Testen von Schreibberechtigungen finden Sie hier: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Interessante Notiz: Bei der Analyse einer mobilen Anwendung mit MobSF überprüft es, ob die Firebase-Datenbank öffentlich verfügbar ist, und benachrichtigt dies.

Alternativ können Sie Firebase Scanner verwenden, ein Python-Skript, das die oben gezeigte Aufgabe automatisiert.

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Authentifiziertes Enum

Wenn Sie über Anmeldeinformationen zum Zugriff auf die Firebase-Datenbank verfügen, können Sie ein Tool wie Baserunner verwenden, um auf die gespeicherten Informationen leichter 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())

Zugriffsinformationen 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önnen 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

Last updated