Firebase配置漏洞挖掘实战:从发现到利用的全过程解析

本文详细介绍了作者在漏洞挖掘过程中发现的Firebase实时数据库配置错误漏洞,包括漏洞原理、利用方法、工具开发以及Android应用逆向工程技巧,完整展现了从发现到报告的全流程。

漏洞挖掘101:那个让我获得赏金的Firebase配置错误

大家好,欢迎阅读我的第一篇漏洞赏金报告。今天我要分享一个非常有趣的发现:我在某个应用中发现了由于Firebase配置错误导致的敏感用户数据泄露严重安全漏洞。

我最近开发了一个名为FireSploit的工具,可以帮助你安全地检测和模拟这种漏洞。在这篇文章中,我将分享完整的漏洞发现过程,这不仅仅是一篇普通的报告,我将展示完整的操作流程。

发现过程

在一个晴朗的日子里,我正在参与一个VDP(漏洞披露计划)项目。我开始测试他们的Web应用,在30分钟内就发现了2-3个漏洞。在报告这些漏洞后,我决定深入挖掘,发现他们还有一个移动应用。

专业提示:在参与VDP/RDP或漏洞赏金项目时,一定要做好充分的信息收集,检查未列出的资产。有时候项目不会明确列出所有资产,但后台应用经常会向主域名发起请求,这可能带来更多发现。

Android应用分析

我发现他们有一个Android应用。我打算进行代码分析,检查硬编码凭据、Intent漏洞和其他Android应用常见问题。

在分析代码时,我注意到了一个Firebase数据库URL,它看起来像这样: https://example.firebaseio.com/

Firebase配置错误

我知道Firebase数据库有安全规则,它们以键值对形式存储数据。如果这些规则配置不当,很容易导致敏感数据泄露。

漏洞原理

漏洞在于Firebase实时数据库规则配置错误。当开发者将.read.write权限设置为true时,意味着互联网上的任何人都可以读写数据库——不需要任何身份验证。

易受攻击的规则配置如下:

1
2
3
4
5
6
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

在这种配置下,攻击者可以:

  • 访问私有用户数据(PII)
  • 注入恶意或伪造数据
  • 删除或篡改记录

为什么会发生这种情况?

主要是由于开发者的错误或测试配置意外推送到生产环境。Firebase让入门变得非常简单,许多开发者在开发期间保持默认规则开放,之后却忘记收紧它们。

现在情况有所改变,因为这种漏洞已经广为人知,如果开发者将读写权限设置为true,Firebase会发出警告。

漏洞利用方法

要利用这个漏洞,有两种方法可以检查Firebase数据库URL是否易受攻击:

  1. 在Firebase数据库URL末尾添加/.json 例如:https://example.firebaseio.com/.json 如果数据库配置错误,这将返回所有数据的纯JSON格式,不需要登录或令牌。

  2. 我构建了一个名为FireSploit的工具来安全地测试它

FireSploit工作原理:

  • 扫描:检查.read和/或.write访问是否开放
  • 数据提取:如果.read启用,提取公开可见的数据
  • 注入:如果.write开放,注入安全的测试载荷,如:
1
2
3
4
5
{
  "pwned_by": "FireSploit",
  "status": "vulnerable",
  "timestamp": "2025-07-04"
}

这有助于开发者确认暴露情况而不会造成任何损害。

访问GitHub页面并在本地克隆:https://github.com/secshubhamsharma/FireSploit

如何找到数据库URL

要找到Android应用中使用的Firebase数据库URL,你需要逆向工程APK文件。以下是分步指南:

步骤1:下载APK

首先获取目标Android应用的APK文件。你可以从自己的设备提取,或从可信的APK网站下载。

步骤2:安装Jadx(反编译器)

使用Jadx这个强大的工具来逆向工程Android APK。确保系统安装了Java JDK——Jadx需要它来运行。

从官方GitHub发布页面下载Jadx:https://github.com/skylot/jadx/releases

步骤3:在Jadx中打开APK

启动Jadx GUI,点击"Open File"并选择APK文件。Jadx将反编译并加载项目。

步骤4:查找Firebase URL

加载APK文件后,从侧边栏点击:

  1. Resources → resources.arsc → res → values → strings.xml
  2. 在res/value/strings.xml文件中搜索firebaseio.com,它将找到数据库URL
  3. 现在你将找到类似这样的Firebase数据库URL

获得数据库URL后,你就可以检查它是否易受攻击。如果是,就编写详细的报告并提交。祝你好运!

结论

这就是我从 casually 参与VDP项目的Web应用漏洞挖掘,到深入分析他们的移动APK,发现Firebase配置错误,最终构建FireSploit来帮助其他人测试的完整旅程。

回顾2022年,这类漏洞要常见得多。许多开发者没有意识到将.read.write设置为true会将敏感用户数据暴露给整个互联网。

但从那时起情况已经发生了变化。现在,Firebase会在数据库规则过于宽松时主动警告开发者。大多数公司现在更加意识到这个问题,并努力锁定他们的云配置,这意味着发现这类漏洞变得困难得多。

尽管如此,仍然值得关注,特别是在旧版应用或废弃项目中,配置错误可能仍然存在。

最终,这次经历提醒我:信息收集就是一切。不要只停留在范围内列出的内容——探索移动应用,检查网络请求,深入研究APK……你永远不知道会发现什么。

感谢阅读到最后,如果你找到了Firebase URL,嗯……现在你知道该怎么做了。😉

如果你有任何问题,可以通过以下方式联系我: LinkedIn: https://www.linkedin.com/in/secshubhamsharma/ Email: secshubhamsharma@gmail.com

谢谢你的阅读!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计