GCP - Firebase Enum
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).
To jest powszechna metodologia do wyszukiwania i wykorzystywania źle skonfigurowanych baz danych Firebase:
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
Dezkompiluj APK używając apktool, wykonaj poniższe polecenie, aby wyodrębnić kod źródłowy z APK.
Przejdź do res/values/strings.xml i poszukaj tego oraz wyszukaj słowo kluczowe “firebase”
Możesz znaleźć coś takiego jak ten URL “https://xyz.firebaseio.com/”
Następnie przejdź do przeglądarki i nawiguj do znalezionego URL: https://xyz.firebaseio.com/.json
Mogą pojawić się 2 typy odpowiedzi:
“Permission Denied”: To oznacza, że nie masz dostępu, więc jest dobrze skonfigurowane
Odpowiedź “null” lub mnóstwo danych JSON: To oznacza, że baza danych jest publiczna i masz przynajmniej dostęp do odczytu.
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 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:
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:
Aby przetestować inne działania na bazie danych, takie jak zapis do bazy danych, zapoznaj się z dokumentacją Pyrebase, którą można znaleźć tutaj.
Informacje dostępu z APPID i kluczem API
Jeśli zdekompilujesz aplikację iOS i otworzysz plik GoogleService-Info.plist
, znajdziesz klucz API i identyfikator APP:
KLUCZ API AIzaSyAs1[...]
IDENTYFIKATOR APP 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
Last updated