Icex0/FireSA
GitHub: Icex0/FireSA
利用泄露的Firebase服务账户凭据进行数据枚举和用户管理的安全工具。
Stars: 0 | Forks: 0
# FireSA

Firebase 服务账户利用脚本。使用泄露的服务账户的 `client_email` 和 `private_key` 枚举 Firebase 服务中的数据。可用于快速创建 PoC。虽然没有实现所有可能的 API 调用,但已足够展示影响。
具有管理员级别角色(如 `firebase-adminsdk`)的服务账户可绕过所有 Firebase 安全规则,获得对 Auth、Realtime Database、Firestore、Storage 等服务的无限制访问。
## 为什么
您是否曾在 APK 文件中发现过 `firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com` 和 `-----BEGIN PRIVATE KEY-----` 硬编码,却不知道如何利用?或者您可能花了大量时间翻阅 Firebase REST API 文档,试图弄清楚需要哪些参数和端点才能发出有效请求。
此工具让您能在找到这些服务账户时立即展示影响——枚举用户、创建/删除用户、列出数据库、列出存储文件等。
## 安装
```
uv tool install --force .
```
## 使用方法
```
firesa --service-account EMAIL --private-key KEY [options]
```
`--private-key` 接受 PEM 文件路径或内联密钥字符串(带 `\n` 转义)。
`--project-id` 默认从服务账户邮箱中提取。
### 列表操作
| 标志 | 描述 |
|------|-------------|
| `--list-all` | 列出所有服务的数据 |
| `--list-users` | 列出 Firebase Auth 用户(如果未给出命令,则为默认) |
| `--lookup-user EMAIL` | 按邮箱查找单个用户 |
| `--list-rtdb` | 列出 RTDB 实例并读取根键(尝试两种 URL 格式,处理区域重定向) |
| `--list-firestore` | 列出 Firestore 数据库和根集合 |
| `--list-storage` | 列出存储桶中的文件(尝试 `.appspot.com` 和 `.firebasestorage.app` 两种格式) |
| `--list-iam` | 列出项目中的服务账户 |
### 用户修改
| 标志 | 描述 |
|------|-------------|
| `--create-user EMAIL PASSWORD` | 创建新用户(可与 `--set-display-name` 结合使用) |
| `--delete-user UID` | 按 UID 删除用户 |
| `--update-user UID` | 更新用户(需要至少一个 `--set-*` 标志) |
| `--set-email` | 设置邮箱地址 |
| `--set-display-name` | 设置显示名称 |
| `--set-password` | 设置密码 |
| `--set-phone` | 设置电话号码 |
| `--set-disabled true/false` | 禁用或启用账户 |
### 其他
| 标志 | 描述 |
|------|-------------|
| `--check-permissions` | 检查 IAM 权限,不读取或修改数据 |
| `--max-users N` | 最大列出用户数(默认:100) |
| `--max-files N` | 最大列出存储文件数(默认:100) |
| `--bucket NAME` | 覆盖存储桶名称 |
| `--json` | 输出原始 JSON |
| `--proxy`, `-x` | HTTP 代理(例如 `http://127.0.0.1:8080`) |
### 权限输出
## 示例
```
# 列出前100个用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem
# 列出所有内容
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --list-all
# 检查服务账户权限
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --check-permissions
# 查找特定用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --lookup-user user@example.com
# 创建用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --create-user test@example.com password123
# 删除用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --delete-user USER_UID
# 更新用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --update-user USER_UID --set-display-name "Test" --set-disabled true
# 通过 Burp 将存储文件列为 JSON
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --list-storage --json -x http://127.0.0.1:8080
```
## 示例
```
# 列出前100个用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem
# 列出所有内容
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --list-all
# 检查服务账户权限
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --check-permissions
# 查找特定用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --lookup-user user@example.com
# 创建用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --create-user test@example.com password123
# 删除用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --delete-user USER_UID
# 更新用户
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --update-user USER_UID --set-display-name "Test" --set-disabled true
# 通过 Burp 将存储文件列为 JSON
firesa --service-account firebase-adminsdk-xxx@my-project.iam.gserviceaccount.com \
--private-key key.pem --list-storage --json -x http://127.0.0.1:8080
```
标签:APK逆向, Auth利用, Firebase, Firebasestorage, Firestore, GCP, Google Cloud, HTTP工具, PoC, Realtime Database, 凭证利用, 存储利用, 安全规则绕过, 数据库利用, 数据枚举, 暴力破解, 服务账户, 权限绕过, 用户枚举, 目录枚举, 硬编码凭证, 移动安全, 逆向工具