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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
- 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 - Decompilieren Sie die APK mit apktool, folgen Sie dem untenstehenden 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 könnten etwas wie diese URL finden “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:
- “Permission Denied”: Das bedeutet, dass Sie keinen Zugriff darauf haben, also ist es gut konfiguriert.
- “null” Antwort oder eine Menge JSON-Daten: Das bedeutet, dass die Datenbank öffentlich ist und Sie mindestens Lesezugriff haben.
- 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:
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/
#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
- https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/
- https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.