GCP - Firebase Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

База даних Firebase Realtime - це хмарна NoSQL база даних, яка дозволяє зберігати та синхронізувати дані між користувачами в реальному часі. Дізнатися більше.

Неаутентифікований перелік

Деякі кінцеві точки Firebase можуть бути знайдені в мобільних додатках. Є можливість, що використовувана кінцева точка Firebase налаштована погано, надаючи всім привілеї на читання (та запис) на ній.

Це загальна методологія для пошуку та експлуатації погано налаштованих баз даних Firebase:

  1. Отримайте APK додатка, ви можете використати будь-який інструмент для отримання APK з пристрою для цього POC. Ви можете використовувати "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e

  2. Декомпілюйте APK за допомогою apktool, виконайте наведену нижче команду для видобуття вихідного коду з APK.

  3. Перейдіть до res/values/strings.xml та знайдіть це та шукайте ключове слово “firebase

  4. Ви можете знайти щось на кшталт цього URL “https://xyz.firebaseio.com/

  5. Далі перейдіть у браузері та перейдіть за знайденим URL: https://xyz.firebaseio.com/.json

  6. Можуть з'явитися 2 типи відповідей:

  7. Permission Denied”: Це означає, що ви не можете отримати доступ до цього, тому це належним чином налаштовано

  8. Відповідь “null” або купа JSON даних: Це означає, що база даних є публічною і ви принаймні маєте доступ на читання.

  9. У цьому випадку ви можете перевірити привілеї на запис, експлойт для перевірки привілеїв на запис можна знайти тут: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Цікава примітка: Під час аналізу мобільного додатка з MobSF, якщо він знаходить базу даних Firebase, він перевірить, чи вона доступна публічно, та повідомить про це.

Також ви можете використовувати Firebase Scanner, сценарій на Python, який автоматизує вищезазначене завдання, як показано нижче:

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Аутентифікований перелік

Якщо у вас є облікові дані для доступу до бази даних Firebase, ви можете використовувати інструмент, такий як Baserunner, щоб отримати більш легкий доступ до збереженої інформації. Або скрипт, подібний до наступного:

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

Доступ до інформації за допомогою APPID та API Key

Якщо ви декомпілюєте iOS додаток і відкриєте файл GoogleService-Info.plist, ви знайдете API Key та APP ID:

  • API KEY AIzaSyAs1[...]

  • APP ID 1:612345678909:ios:c212345678909876

Ви можете мати доступ до цікавої інформації

Запит

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

Посилання

Last updated