GCP - Firebase Enum
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
Firebase
Firebase 实时数据库是一个云托管的 NoSQL 数据库,允许您在实时之间存储和同步用户数据。了解更多。
未认证枚举
一些 Firebase 端点可能在 移动应用程序中找到。使用的 Firebase 端点可能 **配置不当,授予每个人读取(和写入)**的权限。
这是搜索和利用配置不当的 Firebase 数据库的常见方法:
- 获取 APK,您可以使用任何工具从设备获取 APK 进行此 POC。
您可以使用“APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e - 反编译 APK,使用 apktool,按照以下命令从 APK 中提取源代码。
- 转到 res/values/strings.xml 并查找此内容,搜索“firebase”关键字
- 您可能会找到类似于此 URL “https://xyz.firebaseio.com/”
- 接下来,打开浏览器并 导航到找到的 URL:https://xyz.firebaseio.com/.json
- 可能会出现 2 种类型的响应:
- “权限被拒绝”:这意味着您无法访问,因此配置良好
- “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())
要测试数据库上的其他操作,例如写入数据库,请参考可以在 here 找到的 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"}'
参考文献
- https://blog.securitybreached.org/2020/02/04/exploiting-insecure-firebase-database-bugbounty/
- https://medium.com/@danangtriatmaja/firebase-database-takover-b7929bbb62e1
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

