GCP - Firebase Enum
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önnen in mobilen Anwendungen gefunden werden. Es ist möglich, dass der verwendete Firebase-Endpunkt schlecht konfiguriert ist und jedem Berechtigungen zum Lesen (und Schreiben) erteilt.
Dies ist die übliche Methodik, um schlecht konfigurierte Firebase-Datenbanken zu suchen und auszunutzen:
Holen Sie sich die APK der App, Sie können jedes Tool 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
Dekompilieren Sie die APK mit apktool, folgen Sie dem unten stehenden Befehl, um den Quellcode aus der APK zu extrahieren.
Gehen Sie zu res/values/strings.xml und suchen Sie nach diesem und suchen Sie nach dem Schlüsselwort "firebase"
Sie finden möglicherweise eine URL wie diese "https://xyz.firebaseio.com/"
Gehen Sie als Nächstes zum Browser und navigieren Sie zur gefundenen URL: https://xyz.firebaseio.com/.json
Es können 2 Arten von Antworten erscheinen:
"Zugriff verweigert": Dies bedeutet, dass Sie nicht darauf zugreifen können, daher ist es gut konfiguriert
Antwort "null" oder eine Menge JSON-Daten: Dies bedeutet, dass die Datenbank öffentlich ist und Sie zumindest Lesezugriff haben.
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 diese auf eine 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:
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 einfacher zuzugreifen. Oder ein Skript wie das folgende:
Zugriffsinformationen mit APPID und API-Schlüssel
Wenn Sie die iOS-Anwendung dekompilieren und die Datei GoogleService-Info.plist
öffnen, finden Sie den API-Schlüssel und die APP-ID:
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
Last updated