专栏首页FreeBuf我是如何找到Donald Daters应用数据库漏洞的

我是如何找到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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 任意文件移动导致的Windows提权攻击分析

    本文介绍了如何滥用Windows上特权进程执行文件操作来实现本地特权升级(用户到管理员/系统),同时介绍了利用这些类型的错误的现有技术以及漏洞利用工具。

    FB客服
  • Oracle中泄露“天机”的TNS

    数据库的安全是长期存在的问题。在目前大量的数据泄露事件以及漏洞面前,大家看到的大都是SQl注入、越权操作、缓冲区溢出等这些具体漏洞。往往却忽视了造成这些问题的前...

    FB客服
  • 多个国家的在线商店遭黑客入侵,SQL数据库正在出售

    黑客正在出售从多个国家的在线商店窃取的SQL数据库。该数据库总共包含1620000行,公开的记录包括了电子邮件地址、名称、哈希密码(例如bcrypt、MD5)、...

    FB客服
  • 用 MySQL 导入 SQL 文件

    ihoey
  • PHP PDO & Injection Bypass

    PDO默认支持多语句查询,如果php版本小于5.5.21或者创建PDO实例时未设置PDO::MYSQL_ATTR_MULTI_STATEMENTS为false时...

    贝塔安全实验室
  • 「分布式系统之美」知乎圆桌精选大放送,快来看看有没有你关注的问题吧!

    「分布式系统之美」知乎圆桌已上线一周, 部分问答引发了网友的热烈讨论,接下来就跟随小编一起来盘点大家最关心的问题吧!

    PingCAP
  • DB2 Linux平台安装 Part 4 创建数据库

    bsbforever
  • 如何用Python自动操作数据库?

    我在使用 Python 之前,做数据分析工作的流程,一般是先打开数据库客户端,然后运行一段写好的 SQL 语句,把数据查询出来,然后再把数据复制到 Excel ...

    数据森麟
  • 数据库设计的六个阶段详解

    数据库设计可以分为6个阶段 1. 系统需求分析阶段 2. 概念结构设计阶段 3. 逻辑结构设计阶段 4. 物理结构设计阶段 5. 数据库实施阶段 6. 数据库运...

    爱学习的孙小白
  • 微服务的数据库设计

    微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。它是基于下面三个原因。

    烂猪皮

扫码关注云+社区

领取腾讯云代金券