GCP - Firebase Enum
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 usado esteja configurado de forma inadequada concedendo privilégios de leitura (e escrita) a todos.
Esta é a metodologia comum para pesquisar e explorar bancos de dados do Firebase mal configurados:
Obtenha o APK do aplicativo, você pode usar qualquer ferramenta 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
Descompile o APK usando apktool, siga o comando abaixo para extrair o código-fonte do APK.
Vá para o res/values/strings.xml e procure por isso e pesquise pela palavra-chave "firebase"
Você pode encontrar algo como este URL "https://xyz.firebaseio.com/"
Em seguida, vá para o navegador e acesse o URL encontrado: https://xyz.firebaseio.com/.json
2 tipos de respostas podem aparecer:
"Permissão Negada": Isso significa que você não pode acessá-lo, então está bem configurado
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.
Neste caso, você poderia 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 o MobSF, se ele encontrar um banco de dados firebase, ele verificará se este está publicamente disponível e notificará.
Alternativamente, você pode usar o Firebase Scanner, um script em python que automatiza a tarefa acima, conforme mostrado abaixo:
Enumeração Autenticada
Se você possui credenciais para acessar o banco de dados do Firebase, você pode usar uma ferramenta como Baserunner para acessar mais facilmente as informações armazenadas. Ou um script como o seguinte:
Acessar informações com APPID e Chave da API
Se você descompilar o aplicativo iOS e abrir o arquivo GoogleService-Info.plist
e encontrar a Chave da API e o APP ID:
Chave da API 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
Last updated