GCP - Firebase Enum
Baza danych Firebase Realtime to hostowana w chmurze baza danych NoSQL, która umożliwia przechowywanie i synchronizację danych między użytkownikami w czasie rzeczywistym. Dowiedz się więcej.
Enumeracja bez uwierzytelnienia
Niektóre punkty końcowe Firebase mogą być znajdowane w aplikacjach mobilnych. Istnieje możliwość, że używany punkt końcowy Firebase jest źle skonfigurowany, udzielając wszystkim uprawnień do odczytu (i zapisu).
Oto powszechna metodyka wyszukiwania i wykorzystywania źle skonfigurowanych baz danych Firebase:
Pobierz plik APK aplikacji, możesz użyć dowolnego narzędzia do pobrania pliku APK z urządzenia w celu przeprowadzenia POC. Możesz użyć "APK Extractor" https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
Dekompiluj plik APK za pomocą apktool, postępuj zgodnie z poniższym poleceniem, aby wyodrębnić kod źródłowy z pliku APK.
Przejdź do res/values/strings.xml i wyszukaj to i wyszukaj słowo kluczowe "firebase"
Możesz znaleźć coś takiego jak ten adres URL "https://xyz.firebaseio.com/"
Następnie przejdź do przeglądarki i przejdź do znalezionego adresu URL: https://xyz.firebaseio.com/.json
Mogą pojawić się 2 rodzaje odpowiedzi:
"Permission Denied": Oznacza to, że nie masz do niego dostępu, więc jest to poprawnie skonfigurowane.
Odpowiedź "null" lub wiele danych JSON: Oznacza to, że baza danych jest publiczna, a przynajmniej masz dostęp do odczytu.
W tym 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żna użyć Firebase Scanner, skryptu napisanego w języku Python, który automatyzuje powyższe zadanie, jak pokazano poniżej:
Wyliczanie z uwierzytelnieniem
Jeśli masz poświadczenia 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 podobnego do poniższego:
Aby przetestować inne działania na bazie danych, takie jak zapisywanie do bazy danych, należy odwołać się do dokumentacji Pyrebase, która znajduje się tutaj.
Dostęp do informacji za pomocą APPID i klucza API
Jeśli zdekompilujesz aplikację iOS i otworzysz plik GoogleService-Info.plist
, znajdziesz tam klucz API i ID aplikacji:
KLUCZ API AIzaSyAs1[...]
ID APLIKACJI 1:612345678909:ios:c212345678909876
Możesz uzyskać dostęp do niektórych 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"}'
Odwołania
Last updated