GCP - Firebase Enum
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:
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
Dekompajlirajte APK koristeći apktool, pratite sledeću komandu za izdvajanje izvornog koda iz APK-a.
Idite na res/values/strings.xml i potražite ovo i pretražite ključnu reč "firebase"
Možete pronaći nešto poput ovog URL-a "https://xyz.firebaseio.com/"
Zatim, idite na pregledač i otvorite pronađeni URL: https://xyz.firebaseio.com/.json
Mogu se pojaviti 2 vrste odgovora:
"Permission Denied": To znači da nemate pristup, pa je dobro konfigurisano
Odgovor "null" ili gomila JSON podataka: To znači da je baza podataka javna i da barem imate pristup za čitanje.
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:
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:
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
Last updated