GCP - Firebase Enum

हैकट्रिक्स का समर्थन करें

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

अनआथेंटिकेटेड इनम

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

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

  1. एप्लिकेशन का APK प्राप्त करें आप इस POC के लिए उपकरण में से किसी भी एप्लिकेशन से APK प्राप्त करने के लिए कोई भी उपकरण उपयोग कर सकते हैं। आप "APK एक्सट्रैक्टर" का उपयोग कर सकते हैं 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 प्रकार के जवाब आ सकते हैं:

  7. "अनुमति नाकाम": इसका मतलब है कि आप इसे एक्सेस नहीं कर सकते, इसलिए यह ठीक से कॉन्फ़िगर किया गया है

  8. "null" जवाब या एक समूह JSON डेटा: इसका मतलब है कि डेटाबेस सार्वजनिक है और आपके पास कम से कम पढ़ने का अधिकार है।

  9. इस मामले में, आप लेखन की अनुमतियों की जांच कर सकते हैं, लेखन की अनुमतियों का परीक्षण करने के लिए एक एक्सप्लॉइट यहाँ पाया जा सकता है: https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit

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

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

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 Key के साथ एक्सेस जानकारी

यदि आप iOS एप्लिकेशन को डिकॉंपाइल करते हैं और फ़ाइल GoogleService-Info.plist खोलते हैं और आपको API Key और APP ID मिलता है:

  • API KEY AIzaSyAs1[...]

  • APP ID 1:612345678909:ios:c212345678909876

आप कुछ दिलचस्प जानकारी तक पहुंच सकते हैं

Request

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

संदर्भ

Last updated