# GCP - Firebase Enum

{{#include ../../../banners/hacktricks-training.md}}

## [Firebase](https://cloud.google.com/sdk/gcloud/reference/firebase/)

Die Firebase Realtime Database is 'n wolk-gehoste NoSQL-databasis wat jou toelaat om data tussen jou gebruikers in realtime te stoor en te sinkroniseer. [Leer meer](https://firebase.google.com/products/realtime-database/).

### Ongeauthentiseerde Enum

Sommige **Firebase eindpunte** kan in **mobiele toepassings** gevind word. Dit is moontlik dat die Firebase eindpunt wat gebruik word **sleg geconfigureer is en almal toegangsregte gee om dit te lees (en te skryf)**.

Dit is die algemene metodologie om swak geconfigureerde Firebase-databasisse te soek en te benut:

1. **Kry die APK** van die app, jy kan enige van die gereedskap gebruik om die APK van die toestel vir hierdie POC te kry.\
Jy kan “APK Extractor” gebruik [https://play.google.com/store/apps/details?id=com.ext.ui\&hl=e](https://hackerone.com/redirect?signature=3774f35d1b5ea8a4fd209d80084daa9f5887b105&url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.ext.ui%26hl%3Den)
2. **Decompile** die APK met **apktool**, volg die onderstaande opdrag om die bronkode uit die APK te onttrek.
3. Gaan na die _**res/values/strings.xml**_ en soek vir hierdie en **soek** vir die “**firebase**” sleutelwoord
4. Jy mag iets soos hierdie URL “_**https://xyz.firebaseio.com/**_” vind
5. Gaan dan na die blaaier en **navigeer na die gevonde URL**: _https://xyz.firebaseio.com/.json_
6. 2 tipes antwoorde kan verskyn:
1. “**Toegang geweier**”: Dit beteken dat jy nie toegang kan kry nie, so dit is goed geconfigureer
2. “**null**” antwoord of 'n klomp **JSON data**: Dit beteken dat die databasis publiek is en jy ten minste lees toegang het.
1. In hierdie geval kan jy **skryfregte nagaan**, 'n eksploit om skryfregte te toets kan hier gevind word: [https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit](https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit)

**Interessante nota**: Wanneer 'n mobiele toepassing met **MobSF** geanaliseer word, as dit 'n firebase databasis vind, sal dit nagaan of dit **publiek beskikbaar** is en dit sal kennisgee.

Alternatiewelik kan jy [Firebase Scanner](https://github.com/shivsahni/FireBaseScanner) gebruik, 'n python skrip wat die taak hierbo outomatiseer soos hieronder getoon:
```bash
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>
```
### Geverifieerde Enum

As jy akrediteer is om toegang tot die Firebase-databasis te verkry, kan jy 'n hulpmiddel soos [**Baserunner**](https://github.com/iosiro/baserunner) gebruik om die gestoor inligting makliker te bekom. Of 'n skrif soos die volgende:
```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())
```
Om ander aksies op die databasis te toets, soos om na die databasis te skryf, verwys na die Pyrebase4 dokumentasie wat [hier](https://github.com/nhorvath/Pyrebase4) gevind kan word.

### Toegang inligting met APPID en API Sleutel <a href="#access-info-with-appid-and-api-key" id="access-info-with-appid-and-api-key"></a>

As jy die iOS toepassing dekompileer en die lêer `GoogleService-Info.plist` oopmaak en jy vind die API Sleutel en APP ID:

- API SLEUTEL **AIzaSyAs1\[...]**
- APP ID **1:612345678909:ios:c212345678909876**

Jy mag in staat wees om 'n paar interessante inligting te bekom

**Versoek**

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

## Verwysings <a href="#references" id="references"></a>

- ​[https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/](https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/)​
- ​[https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1](https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1)​

{{#include ../../../banners/hacktricks-training.md}}
