GCP - Firebase Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Firebase Realtime baza podataka je cloud-hostovana NoSQL baza podataka koja vam omogućava skladištenje i sinhronizaciju podataka između korisnika u realnom vremenu. Saznajte više.

Neautentifikovano Enumerisanje

Neki Firebase endpointi mogu se pronaći u mobilnim aplikacijama. Moguće je da je korišćeni Firebase endpoint loše konfigurisan i omogućava svima privilegije za čitanje (i pisanje).

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

  1. Dobijte APK aplikacije, možete koristiti bilo koji alat za dobijanje APK-a sa uređaja za ovaj 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 za izdvajanje izvornog koda iz APK-a.

  3. Idite na res/values/strings.xml i potražite ovo i pretražite ključnu reč "firebase"

  4. Možete pronaći nešto poput ovog URL-a "https://xyz.firebaseio.com/"

  5. Zatim, idite na pregledač i otvorite pronađeni URL: https://xyz.firebaseio.com/.json

  6. Mogu se pojaviti 2 vrste odgovora:

  7. "Permission Denied": To znači da nemate pristup, pa je dobro konfigurisano

  8. Odgovor "null" ili gomila JSON podataka: To znači da je baza podataka javna i da barem imate pristup za čitanje.

  9. U ovom slučaju, možete proveriti privilegije za pisanje, eksploit za testiranje privilegija za pisanje možete pronaći ovde: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Interesantna napomena: Kada se analizira mobilna aplikacija sa MobSF, ako pronađe firebase bazu podataka, proveriće da li je ona javno dostupna i obavestiće o tome.

Alternativno, možete koristiti Firebase Scanner, python skriptu koja automatizuje gorenavedene zadatke, kao što je prikazano ispod:

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Enumeracija sa autentifikacijom

Ako imate pristupnim podacima za pristup Firebase bazi podataka, možete koristiti alat poput Baserunner da biste lakše pristupili sačuvanim informacijama. Ili možete koristiti skriptu poput sledeće:

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

Da biste testirali druge radnje na bazi podataka, kao što je pisanje u bazu podataka, pogledajte dokumentaciju za Pyrebase koju možete pronaći ovde.

Pristup informacijama pomoću APPID i API ključa

Ako dekompilirate 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 pristupiti 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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated