GCP - Firebase Enum

htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

Firebase Realtime Database는 사용자 간에 데이터를 실시간으로 저장하고 동기화할 수 있는 클라우드 호스팅 NoSQL 데이터베이스입니다. 자세히 알아보기.

인증되지 않은 Enum

몇몇 Firebase 엔드포인트모바일 애플리케이션에서 찾을 수 있습니다. Firebase 엔드포인트가 잘못 구성되어 모든 사용자에게 읽기 (및 쓰기) 권한을 부여하는 경우가 있을 수 있습니다.

잘못 구성된 Firebase 데이터베이스를 검색하고 악용하는 일반적인 방법은 다음과 같습니다:

  1. 앱의 APK를 가져옵니다. 이 POC를 위해 장치에서 APK를 가져올 수 있는 도구 중 하나를 사용할 수 있습니다. "APK Extractor"를 사용할 수 있습니다. https://play.google.com/store/apps/details?id=com.ext.ui&hl=e

  2. apktool을 사용하여 APK를 디컴파일합니다. 아래 명령을 따라 APK에서 소스 코드를 추출하세요.

  3. _res/values/strings.xml_로 이동하고 "firebase" 키워드를 검색하세요.

  4. "https://xyz.firebaseio.com/"와 같은 URL을 찾을 수 있습니다.

  5. 다음으로, 브라우저로 이동하여 찾은 URL에 이동합니다: https://xyz.firebaseio.com/.json

  6. 2 종류의 응답이 나타날 수 있습니다:

    1. "Permission Denied": 이는 액세스할 수 없으므로 잘 구성되어 있습니다.

    2. "null" 응답 또는 일련의 JSON 데이터: 이는 데이터베이스가 공개되어 있으며 적어도 읽기 권한이 있음을 의미합니다.

      1. 이 경우, 쓰기 권한을 확인할 수 있으며, 쓰기 권한을 테스트하기 위한 악용은 다음에서 찾을 수 있습니다: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

흥미로운 참고: MobSF를 사용하여 모바일 애플리케이션을 분석할 때, Firebase 데이터베이스를 찾으면 이것이 공개적으로 사용 가능한지 확인하고 알립니다.

또한, Firebase Scanner를 사용할 수 있습니다. 이는 위의 작업을 자동화하는 파이썬 스크립트입니다.

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 키로 정보에 액세스하기

iOS 애플리케이션을 디컴파일하고 GoogleService-Info.plist 파일을 열면 API 키와 APP ID를 찾을 수 있습니다:

  • API 키 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"}'

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

最終更新