前言
星期一的晚上像往常一样我通过观看电视节目来打发时间,但并没有什么有趣的节目。于是我决定在手机上寻找乐趣,我开始漫无目的在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)相关媒体进行了及时的报道
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