GCP - Firebase Enum

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Firebase

Firebase Realtime Database to hostowana w chmurze baza danych NoSQL, która pozwala na przechowywanie i synchronizowanie danych między użytkownikami w czasie rzeczywistym. Dowiedz się więcej.

Unauthenticated Enum

Niektóre punkty końcowe Firebase mogą być znalezione w aplikacjach mobilnych. Istnieje możliwość, że używany punkt końcowy Firebase jest źle skonfigurowany, przyznając wszystkim uprawnienia do odczytu (i zapisu).

Oto powszechna metodologia wyszukiwania i wykorzystywania źle skonfigurowanych baz danych Firebase:

  1. Pobierz APK aplikacji, możesz użyć dowolnego narzędzia, aby uzyskać APK z urządzenia dla tego POC.
    Możesz użyć “APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
  2. Dezkompiluj APK używając apktool, wykonaj poniższe polecenie, aby wyodrębnić kod źródłowy z APK.
  3. Przejdź do res/values/strings.xml i poszukaj tego oraz wyszukaj słowo kluczowe “firebase
  4. Możesz znaleźć coś takiego jak ten URL “https://xyz.firebaseio.com/
  5. Następnie przejdź do przeglądarki i nawiguj do znalezionego URL: https://xyz.firebaseio.com/.json
  6. Mogą pojawić się 2 typy odpowiedzi:
  7. Permission Denied”: To oznacza, że nie masz dostępu, więc jest dobrze skonfigurowane
  8. Odpowiedź “null” lub mnóstwo danych JSON: To oznacza, że baza danych jest publiczna i masz przynajmniej dostęp do odczytu.
  9. W takim przypadku możesz sprawdzić uprawnienia do zapisu, exploit do testowania uprawnień do zapisu można znaleźć tutaj: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

Ciekawa uwaga: Podczas analizy aplikacji mobilnej za pomocą MobSF, jeśli znajdzie bazę danych firebase, sprawdzi, czy jest ona publicznie dostępna i powiadomi o tym.

Alternatywnie, możesz użyć Firebase Scanner, skryptu w Pythonie, który automatyzuje powyższe zadanie, jak pokazano poniżej:

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Authenticated Enum

Jeśli masz dane uwierzytelniające do uzyskania dostępu do bazy danych Firebase, możesz użyć narzędzia takiego jak Baserunner, aby łatwiej uzyskać dostęp do przechowywanych informacji. Lub skryptu takiego jak poniższy:

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

Aby przetestować inne akcje na bazie danych, takie jak zapis do bazy danych, zapoznaj się z dokumentacją Pyrebase4, która jest dostępna tutaj.

Informacje dostępu z APPID i kluczem API

Jeśli zdekompilujesz aplikację iOS i otworzysz plik GoogleService-Info.plist, znajdziesz klucz API i APP ID:

  • KLUCZ API AIzaSyAs1[…]
  • APP ID 1:612345678909:ios:c212345678909876

Możesz uzyskać dostęp do interesujących informacji

Żądanie

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

Odniesienia

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks