GCP - Firebase Enum

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Firebase

O Firebase Realtime Database Ă© um banco de dados NoSQL hospedado na nuvem que permite armazenar e sincronizar dados entre seus usuĂĄrios em tempo real. Saiba mais.

Enum NĂŁo Autenticado

Alguns endpoints do Firebase podem ser encontrados em aplicativos mĂłveis. É possĂ­vel que o endpoint do Firebase utilizado esteja mal configurado, concedendo privilĂ©gios a todos para ler (e escrever) nele.

Esta Ă© a metodologia comum para pesquisar e explorar bancos de dados do Firebase mal configurados:

  1. Obtenha o APK do aplicativo, vocĂȘ pode usar qualquer uma das ferramentas para obter o APK do dispositivo para este POC.
    VocĂȘ pode usar “APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
  2. Decompile o APK usando apktool, siga o comando abaixo para extrair o cĂłdigo-fonte do APK.
  3. Vá para o res/values/strings.xml e procure por isso e busque pela palavra-chave “firebase”
  4. VocĂȘ pode encontrar algo como esta URL “https://xyz.firebaseio.com/”
  5. Em seguida, vå para o navegador e navegue até a URL encontrada: https://xyz.firebaseio.com/.json
  6. 2 tipos de respostas podem aparecer:
  7. “PermissĂŁo Negada”: Isso significa que vocĂȘ nĂŁo pode acessĂĄ-lo, entĂŁo estĂĄ bem configurado
  8. Resposta “null” ou um monte de dados JSON: Isso significa que o banco de dados Ă© pĂșblico e vocĂȘ pelo menos tem acesso de leitura.
  9. Nesse caso, vocĂȘ pode verificar os privilĂ©gios de escrita, um exploit para testar os privilĂ©gios de escrita pode ser encontrado aqui: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Nota interessante: Ao analisar um aplicativo mĂłvel com MobSF, se ele encontrar um banco de dados do Firebase, verificarĂĄ se este estĂĄ disponĂ­vel publicamente e notificarĂĄ.

Alternativamente, vocĂȘ pode usar Firebase Scanner, um script em python que automatiza a tarefa acima, conforme mostrado abaixo:

bash
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Enum Autenticado

Se vocĂȘ tiver credenciais para acessar o banco de dados do Firebase, pode usar uma ferramenta como Baserunner para acessar mais facilmente as informaçÔes armazenadas. Ou um script como o seguinte:

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

Para testar outras açÔes no banco de dados, como escrever no banco de dados, consulte a documentação do Pyrebase4 que pode ser encontrada aqui.

Acessar informaçÔes com APPID e API Key

Se vocĂȘ descompilar o aplicativo iOS e abrir o arquivo GoogleService-Info.plist e encontrar a API Key e o APP ID:

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

VocĂȘ pode ser capaz de acessar algumas informaçÔes interessantes

Requisição

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

ReferĂȘncias

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks