GCP - Firebase Enum

htARTE (HackTricks AWS Red Team Expert) でゼロからヒーローまでの AWS ハッキングを学ぶ

HackTricks をサポートする他の方法:

Firebase Realtime Database は、リアルタイムでユーザー間でデータを保存・同期させることができるクラウドホスト型の NoSQL データベースです。詳細を学ぶ.

認証されていない Enum

Firebase エンドポイントモバイルアプリケーションで見つかることがあります。Firebase エンドポイントが誤って設定されていて、誰でも読み取り(および書き込み)権限を持っている可能性があります。

不適切に設定された Firebase データベースを検索して悪用する一般的な方法論は以下の通りです:

  1. APK を取得する アプリの APK をデバイスから取得するために、この POC には任意のツールを使用できます。 "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. このような 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 データベースを見つけると、これが公開されているかどうかをチェックし、通知します。

代わりに、以下に示すように、上記のタスクを自動化する python スクリプトである Firebase Scanner を使用することができます。

python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>

認証済みEnum

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

データベースへの書き込みなど、他のアクションをテストするには、こちらで見つけることができるPyrebaseのドキュメントを参照してください。

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をサポートする他の方法:

最終更新