GCP - Firebase Enum
Reading time: 6 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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Firebase
Firebase Realtime Databaseは、ユーザー間でデータをリアルタイムで保存および同期できるクラウドホストのNoSQLデータベースです。詳細はこちら。
認証なしの列挙
一部のFirebaseエンドポイントはモバイルアプリケーションに存在する可能性があります。使用されているFirebaseエンドポイントが不適切に構成されており、すべての人に読み取り(および書き込み)の権限を付与している可能性があります。
これは、不適切に構成されたFirebaseデータベースを検索して悪用する一般的な方法論です:
- APKを取得します。POCのためにデバイスからAPKを取得するために任意のツールを使用できます。
「APK Extractor」を使用できます。https://play.google.com/store/apps/details?id=com.ext.ui&hl=e - apktoolを使用してAPKを逆コンパイルします。以下のコマンドに従ってAPKからソースコードを抽出します。
- _res/values/strings.xml_に移動し、これを探して“firebase”キーワードを検索します。
- “https://xyz.firebaseio.com/”のようなURLが見つかるかもしれません。
- 次に、ブラウザに移動し、見つけたURLに移動します:https://xyz.firebaseio.com/.json
- 2種類の応答が表示される可能性があります:
- “Permission Denied”:これはアクセスできないことを意味し、適切に構成されています。
- “null”応答または一連のJSONデータ:これはデータベースが公開されており、少なくとも読み取りアクセスがあることを意味します。
- この場合、書き込み権限を確認できます。書き込み権限をテストするためのエクスプロイトはここにあります:https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit
興味深い注記:MobSFを使用してモバイルアプリケーションを分析する際、Firebaseデータベースが見つかると、それが公開されているかどうかを確認し、通知します。
また、Firebase Scannerを使用することもできます。これは、上記のタスクを自動化するPythonスクリプトです。
python FirebaseScanner.py -f <commaSeperatedFirebaseProjectNames>
Authenticated Enum
Firebaseデータベースにアクセスするための資格情報がある場合、Baserunnerのようなツールを使用して、保存された情報により簡単にアクセスできます。または、次のようなスクリプトを使用できます:
#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キーで情報にアクセスする
iOSアプリケーションをデコンパイルし、GoogleService-Info.plist
ファイルを開くと、APIキーと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"}'
参考文献
- https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/
- https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。