GCP - Firebase Enum

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Firebase

Firebase Realtime Database एक क्लाउड-होस्टेड NoSQL डेटाबेस है जो आपको अपने उपयोगकर्ताओं के बीच डेटा को रीयलटाइम में स्टोर और सिंक करने की अनुमति देता है। Learn more.

Unauthenticated Enum

कुछ Firebase endpoints मोबाइल एप्लिकेशन में पाए जा सकते हैं। यह संभव है कि उपयोग किया गया Firebase endpoint खराब तरीके से कॉन्फ़िगर किया गया हो जिससे सभी को पढ़ने (और लिखने) की अनुमति मिलती है

यह खराब कॉन्फ़िगर किए गए Firebase डेटाबेस को खोजने और शोषण करने की सामान्य पद्धति है:

  1. APK प्राप्त करें उस ऐप का, आप इस POC के लिए डिवाइस से APK प्राप्त करने के लिए किसी भी टूल का उपयोग कर सकते हैं।
    आप “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 प्रकार की प्रतिक्रियाएँ प्रकट हो सकती हैं:
    1. Permission Denied”: इसका मतलब है कि आप इसे एक्सेस नहीं कर सकते, इसलिए यह अच्छी तरह से कॉन्फ़िगर किया गया है।
    2. null” प्रतिक्रिया या JSON डेटा का एक समूह: इसका मतलब है कि डेटाबेस सार्वजनिक है और आपके पास कम से कम पढ़ने की अनुमति है।
      1. इस मामले में, आप लिखने की अनुमतियों की जांच कर सकते हैं, लिखने की अनुमतियों का परीक्षण करने के लिए एक शोषण यहाँ पाया जा सकता है: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

दिलचस्प नोट: जब MobSF के साथ एक मोबाइल एप्लिकेशन का विश्लेषण करते समय, यदि यह एक firebase डेटाबेस पाता है तो यह जांच करेगा कि क्या यह सार्वजनिक रूप से उपलब्ध है और इसे सूचित करेगा।

वैकल्पिक रूप से, आप Firebase Scanner का उपयोग कर सकते हैं, एक पायथन स्क्रिप्ट जो ऊपर दिए गए कार्य को स्वचालित करती है जैसा कि नीचे दिखाया गया है:

bash
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

Authenticated Enum

यदि आपके पास Firebase डेटाबेस तक पहुँचने के लिए क्रेडेंशियल्स हैं, तो आप संग्रहीत जानकारी तक अधिक आसानी से पहुँचने के लिए Baserunner जैसे टूल का उपयोग कर सकते हैं। या निम्नलिखित की तरह एक स्क्रिप्ट:

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

अन्य क्रियाओं का परीक्षण करने के लिए, जैसे कि डेटाबेस में लिखना, Pyrebase4 दस्तावेज़ीकरण का संदर्भ लें जो यहां पाया जा सकता है।

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

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें