GCP - Firebase Enum

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Firebase

Firebase Realtime Database je NoSQL baza podataka koja se hostuje u oblaku i omogućava vam da skladištite i sinhronizujete podatke između vaših korisnika u realnom vremenu. Saznajte više.

Neautentifikovana Enum

Neki Firebase endpointi mogu se naći u mobilnim aplikacijama. Moguće je da je Firebase endpoint koji se koristi loše konfigurisan, dajući svima privilegije za čitanje (i pisanje) na njemu.

Ovo je uobičajena metodologija za pretragu i eksploataciju loše konfigurisanih Firebase baza podataka:

  1. Preuzmite APK aplikacije, možete koristiti bilo koji alat za preuzimanje APK-a sa uređaja za ovu POC.
    Možete koristiti “APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
  2. Dekompajlirajte APK koristeći apktool, pratite sledeću komandu da biste izvukli izvorni kod iz APK-a.
  3. Idite na res/values/strings.xml i potražite ovo i pretražujte ključnu reč “firebase
  4. Možda ćete pronaći nešto poput ove URL adrese “https://xyz.firebaseio.com/
  5. Zatim, idite na pregledač i navigirajte do pronađene URL adrese: https://xyz.firebaseio.com/.json
  6. Mogu se pojaviti 2 tipa odgovora:
    1. Permission Denied”: To znači da ne možete pristupiti, tako da je dobro konfigurisan
    2. null” odgovor ili gomila JSON podataka: To znači da je baza podataka javna i da imate barem pristup za čitanje.
      1. U ovom slučaju, mogli biste proveriti privilegije za pisanje, eksploatacija za testiranje privilegija za pisanje može se naći ovde: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Zanimljiva napomena: Kada analizirate mobilnu aplikaciju sa MobSF, ako pronađe firebase bazu podataka, proveriće da li je javna i obavestiće vas o tome.

Alternativno, možete koristiti Firebase Scanner, python skriptu koja automatizuje gornji zadatak kao što je prikazano u nastavku:

bash
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Autentifikovana enumeracija

Ako imate akreditive za pristup Firebase bazi podataka, možete koristiti alat kao što je Baserunner da lakše pristupite pohranjenim informacijama. Ili skriptu poput sledeće:

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

Da biste testirali druge akcije na bazi podataka, kao što je pisanje u bazu podataka, pogledajte Pyrebase4 dokumentaciju koja se može naći ovde.

Informacije o pristupu sa APPID i API ključem

Ako dekompajlirate iOS aplikaciju i otvorite datoteku GoogleService-Info.plist i pronađete API ključ i APP ID:

  • API KLJUČ AIzaSyAs1[...]
  • APP ID 1:612345678909:ios:c212345678909876

Možda ćete moći da pristupite nekim zanimljivim informacijama

Zahtev

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

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks