我是如何找到Donald Daters应用数据库漏洞的

前言

星期一的晚上像往常一样我通过观看电视节目来打发时间,但并没有什么有趣的节目。于是我决定在手机上寻找乐趣,我开始漫无目的在Twitter上翻看各种推文,一条Fox News的推送内容引起了我的关注。

有人为特朗普的支持者开发了一个名为“唐纳德约会者”(Donald Daters)的软件,并配以“让美国人再次约会”的响亮口号!这顿时激起了我的斗志,我决定拿它来练练手~

初步侦察

我立马从PlayStore下载了这个应用程序,并以普通使用者的身份对它的可用功能进行了初步的了解。

这是一款约会app,通过对象匹配的方式与陌生人进行对话。

静态分析

1)首先,我将APK文件从我的手机导入到了电脑上。你可以使用这款软件来帮助你完成这个过程。 2)APK是一个ZIP文件,解压缩并提取DEX文件。 3)你可以使用jadx这款工具,从提取的DEX文件中获取反编译的源码。 4)使用apktool获取应用程序的resources文件。

一切准备就绪,现在让我们来分析这些获取的文件,通过查看AndroidManifest.xml文件,我们可以知道:

该应用当前使用的是Firebase数据库; 这是一个React Native应用程序,com/donalddaters文件夹几乎为空可以证明这一点。这种应用程序的代码位于assets/index.android.bundle文件中; 该应用会要求授权许多敏感权限。

接着,我查看了values/strings.xml文件。

可以看到ID和密钥都被硬编码在了该文件中。此外,我们还可以看到他们正在使用Firebase数据库。让我们看看他们是否正确配置了数据库。我在Chrome中粘贴访问了https://donalddaters2018.firebaseio.com/.json:

他们竟然保留了数据库的开发设置。这意味着任何人都可以访问他们的数据库……现在,我可以查看到数据库中所有用户信息(包括姓名,头像,身份,平台,通知),甚至是使用他们的token,查看所有私人消息等。

该应用仅上线了几小时,因此只有1607个注册用户和128个rooms。 有趣的是,其中最长的一个讨论(62条消息),来自于应用程序开发者之间。

如以下截图中所示,这里有一个指向数据库中用户头像的链接。

多亏了这个简单的小脚本,帮我下载了所有可用的头像,我已将部分头像发布在了Twitter上。

这是一小部分配置文件图片。https://t.co/GxIr5Mtf8d:

漏洞利用

我创建了一个新的Android应用并添加了Firebase。具体操作可以参阅本指南。

在我的项目中有一个google-services.json文件,其中存储了所有Firebase设置。为了与Donald Daters的Firebase数据库进行通信,我需要找到他们的Firebase设置(api密钥,数据库URL以及storage bucket)并将它们替换到我的google-services.json文件中。

前面我们已从values/strings.xml文件中,获取到了数据库URL和storage bucket。那么,api密钥又在哪获取呢?

在静态分析那部分我提到过,React Native应用程序的代码位于assets/index.android.bundle文件中。让我们来逆向它!

通过使用binwalk,我提取出了一堆的javascript文件。

使用grep命令,我很快就找到了api key。

现在,google-services.json文件中的所有必要设置我们都已填写完成。让我们来创建了一个用于读/写Donald Daters数据库的activity。

这段代码将会读取数据库的所有“rooms”,即“匹配”。

这里我编写了一个PoC,可用于验证Donald Daters应用程序数据库的脆弱性。有了这个POC,我可以查看所有私人消息 - 用户信息 - 或是删除:消息,用户,甚至是整个数据库中的内容。https://t.co/7doErhzYdY:

我是一个有操守的白帽子,但我可以告诉你添加这一小行“myRef.setValue(“”)”,你将会清空整个数据库。

缓解措施

发布应用时,不要使用Firebase数据库的开发设置; 聘请有能力的开发人员,这会带来很大的帮助。

时间线

1)在Twitter上发布

Hi@FoxNews和@realDonaldTrump支持者,我可以在5分钟内获取所有注册用户的:名称 - 照片 - 个人消息 - 令牌等。你们应该立即停止它的使用,并修复这个漏洞,https://t.co/72KdNJTrmk。

2)相关媒体进行了及时的报道

https://motherboard.vice.com/en_us/article/mbdwb3/the-donald-daters-trump-dating-app-exposed-a-load-of-its-users-data techcrunch.com/2018/10/15/donald-daters-a-dating-app-for-trump-supporters-leaked-its-users-data/

3)Donald Daters更改了他们数据库的设置

4)报告回复

感谢你的关注和报告!我们已修复了这个安全问题,并正在为DonaldDaters社区的发展持续努力!希望你继续关注我们,第一时间反馈你所发现的问题。再次感谢!https://t.co/EBIOggrh8K

*参考来源:medium,FB小编secist编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏余果的专栏

Google分析language垃圾信息

最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息...

8941
来自专栏IT技术精选文摘

Google分析language垃圾信息

最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息:

1183
来自专栏北京马哥教育

小技巧:显示数据库查询耗时,改善开发者习惯

我会分享一系列在我开发生涯中积累的有用且容易实现的小技巧,本文是此系列的第一篇。 ---- 很多原因都可能导致网站运行缓慢,但这其中最常见的就是在数据库查询耗时...

2926
来自专栏CDN及云技术分享

微型分布式架构设计范例

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。

1K28
来自专栏Python中文社区

一键获取免费真实的匿名代理

專 欄 ❈夏洛之枫,从销售转为程序员,Python爬虫爱好者。 github: https://github.com/ShichaoMa/proxy_fact...

2436
来自专栏deed博客

权限何必那么高

1834
来自专栏杨建荣的学习笔记

记一次远程协助的排错案例(r9笔记第62天)

前几天的时候帮助一个网友看了他遇到的一个问题,在问题处理中也让我有不少的感悟。 最开始的时候这位网友的问题是一个10gR2的单实例数据库,监听无法正常关闭和启动...

3785
来自专栏沃趣科技

沃趣科技火线救援某公安系统核心业务数据

求助电话 只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。 案发现场 其核心数据库,由于存储突然断电,导致数据库实例...

3557
来自专栏用户2442861的专栏

高并发服务端分布式系统设计概要(上)

http://www.cnblogs.com/ccdev/p/3338412.html

1273
来自专栏杨建荣的学习笔记

用脚本来讲一个技术生活的故事 (r9笔记第32天)

对于生活,用文字表达是一种非常好的方式,作为技术人,我决定使用一个脚本来映射技术生活中的一些小故事,也是在今天突然想到的。 对的,你没有看错,就是下面这个命令。...

3623

扫码关注云+社区

领取腾讯云代金券