GCP - Firebase Enum

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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.

Enumeração Não Autenticada

Alguns endpoints do Firebase podem ser encontrados em aplicativos móveis. É possível que o endpoint do Firebase utilizado esteja configurado incorretamente, concedendo a todos privilégios de leitura (e escrita).

Esta é a metodologia comum para buscar e explorar bancos de dados Firebase mal configurados:

  1. Obtenha o APK do aplicativo, você pode usar qualquer ferramenta para obter o APK do dispositivo para este POC. Você pode usar o "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e

  2. Descompile 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 pesquise pela palavra-chave “firebase

  4. Você pode encontrar algo como esta URL “https://xyz.firebaseio.com/

  5. Em seguida, vá ao navegador e navegue até a URL encontrada: https://xyz.firebaseio.com/.json

  6. 2 tipos de respostas podem aparecer:

    1. Permission Denied”: Isso significa que você não pode acessá-lo, então está bem configurado

    2. Resposta “null” ou um monte de dados JSON: Isso significa que o banco de dados é público e você tem pelo menos acesso de leitura.

      1. Neste caso, você poderia verificar os privilégios de escrita, um exploit para testar 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 firebase, ele verificará se este está disponível publicamente e notificará.

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

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Enumeração Autenticada

Se você possui credenciais para acessar o banco de dados Firebase, você pode usar uma ferramenta como Baserunner para acessar mais facilmente as informações armazenadas. Ou um script como o seguinte:

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

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

Acesso à informação 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

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización