GCP - Firebase Enum
Firebase 实时数据库是一个云托管的 NoSQL 数据库,可让您在用户之间实时存储和同步数据。了解更多。
未经身份验证的枚举
一些 Firebase 端点 可能在 移动应用 中被发现。可能会出现 Firebase 端点配置不当,授予所有人读取(和写入)权限的情况。
这是搜索和利用配置不当的 Firebase 数据库的常见方法:
获取应用的 APK,您可以使用任何工具从设备中获取 APK 以进行此 POC。 您可以使用“APK Extractor” https://play.google.com/store/apps/details?id=com.ext.ui&hl=e
使用 apktool 对 APK 进行 反编译,按照下面的命令从 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 脚本,如下所示:
鉴权枚举
如果您有凭据访问 Firebase 数据库,您可以使用诸如 Baserunner 这样的工具更轻松地访问存储的信息。或者使用以下脚本:
使用 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"}'
参考
Last updated