漏洞挖掘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时,意味着互联网上的任何人都可以读写数据库——不需要任何身份验证。
易受攻击的规则配置如下:
|
|
在这种配置下,攻击者可以:
- 访问私有用户数据(PII)
- 注入恶意或伪造数据
- 删除或篡改记录
为什么会发生这种情况?
主要是由于开发者的错误或测试配置意外推送到生产环境。Firebase让入门变得非常简单,许多开发者在开发期间保持默认规则开放,之后却忘记收紧它们。
现在情况有所改变,因为这种漏洞已经广为人知,如果开发者将读写权限设置为true,Firebase会发出警告。
漏洞利用方法
要利用这个漏洞,有两种方法可以检查Firebase数据库URL是否易受攻击:
-
在Firebase数据库URL末尾添加
/.json
例如:https://example.firebaseio.com/.json
如果数据库配置错误,这将返回所有数据的纯JSON格式,不需要登录或令牌。 -
我构建了一个名为FireSploit的工具来安全地测试它
FireSploit工作原理:
- 扫描:检查
.read
和/或.write
访问是否开放 - 数据提取:如果
.read
启用,提取公开可见的数据 - 注入:如果
.write
开放,注入安全的测试载荷,如:
|
|
这有助于开发者确认暴露情况而不会造成任何损害。
访问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文件后,从侧边栏点击:
- Resources → resources.arsc → res → values → strings.xml
- 在res/value/strings.xml文件中搜索firebaseio.com,它将找到数据库URL
- 现在你将找到类似这样的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
谢谢你的阅读!