挖洞经验 | 我是如何挖掘热门“约P软件”漏洞的

写在前面的话

本文所介绍的漏洞存在于一款当前热门的约会应用之中,在编写这篇文章时,我也已经对截图中可能会涉及到的App、组织以及用户名称进行了处理,因为我不想损害相关方的切身利益。 本文所涉及到的应用程序来源于一家创业公司,而且这家公司的经营状况也非常好。我出于教育目的编写了这篇文章,希望能够为安全社区贡献自己的绵薄之力。需要注意的是,本文所介绍的漏洞已经披露给了相关厂商,这些漏洞现已得到修复。

故事开始

我当时发现了一款热门的约会App,这款App拥有超过一百万的用户量。鉴于这款App受欢迎程度如此之高,我感觉它应该经过了严格的安全检测。尽管如此,但我还是打算尝试去寻找其中的安全漏洞。 跟很多App一样,这款约会App也有很多内购功能,这些功能可以帮助用户提高曝光率,发送各种自定义表情,修改位置,获得无限赞等等。除此之外,这款App还可以允许用户了解谁看过TA的资料,谁喜欢TA,以及谁给TA点过赞等等,不过这些功能都需要付费使用(App内购)。 在开始测试之前,为了拦截并分析网络流量,我使用Burp代理了我的移动端流量。下面给出的是当我访问我个人资料时所产生的网络流量信息(Burp):

在浏览我个人资料的时候,我发现这款App给女生所提供的匿名性程度要比男生要高。女生名字用的是缩写(只提供了姓名的首字母),而男生名称并没有使用缩写(直接给出了全名)。 这可不公平,可能是因为开发人员感觉男生更加擅长社工技术吧… 接下来,我发现了第一个漏洞。

1. 发现世界各地的“P友”

该功能可以让用户虚拟地在全球各地“旅游”,并允许用户随意更改地理位置,但是这个功能需要付费使用。 在更改地理位置时,Burp所捕捉到的请求如下图所示。请注意请求中的经纬度参数,你只需要将其中的经纬度参数修改成你所需要的值(地理位置),你就可以更改个人资料中的区域信息了。

姓名缩写确实给我带来了不小的麻烦,由于手中的信息非常有限,所以我的社工技术几乎无用武之地。不过我加了一把劲之后,姓名缩写的问题对我来说已经不再是一个问题了。接下来,便是第二个安全漏洞。

2. 获取任意用户完整的个人资料

正如你之前所看到的,当我跳转到我的个人资料页面时,Burp捕捉到的请求信息如下:

我的个人资料中显示了我的全名以及其他的很多信息,而这些信息是不会显示给其他用户的。请求中包含了我的UserID,而我做了一件绝大多数黑客都会做的事情,那就是将我的UserID修改成了其他用户的UserID。 不幸的是,啥都没发生…我得到了一条401未授权错误:(

我的目标用户个人资料如下图所示(出于隐私角度考虑,此处应打码):

就此看来,这款应用程序似乎没有不安全的直接对象引用漏洞(IDOR)。但是别着急,我们还有其他的方法!接下来,我尝试添加了另一个UserID参数,看看是否可以通过参数修改等方式来访问目标用户的个人资料。 非常好,这招竟然有用!

我拿到了这个美女的全名,现在我就可以在社交网站上发挥我的社工技术了。当然了,我还拿到了很多非公开信息:D

拿到了这些信息之后,我在Facebook上找到了她。 当我在这款约会App上检查她的个人资料时,我X!我竟然不小心把我所有的照片上传到了她的个人资料里…不仅如此,我的大部分信息也被复制到了她的个人资料中。这下可搞大了…

更可怕的是,我竟然没办法删除我的照片!这也就意味着,对她感兴趣的男孩看到的都将是我的照片,但名字仍是这位美女的…

在研究了一段时间之后,我找到了该问题的主要原因:这里有一个Payload在作怪。

解码后的Payload信息如下所示:

我将原来的http://store.s3.amazonaws.com\/Pictures\/1020141317.jpg替换成了其他图片的地址,并成功将这位美女个人资料中我的照片替换成了其他图片。

3. 读取任意用户的“搭讪”消息

使用参数污染的方式,我们将能够读取任意用户的搭讪信息。

4. 获取无限点赞

在浏览个人资料时,我发现我没办法点赞了。为了得到更多的赞,我需要等待10个小时。因为App规定用户只能获取一定数量的点赞…

在测试过程中,我捕捉到了下列请求: 你只需要添加目标用户的targetID,你就可以完成点赞了,而且不会受到次数限制。

5. 查看已跳过的用户资料

跟现在很多约X应用一样,这款约会应用当你滑过某个用户之后,你可能就很难再见到TA了。但是,这款App还提供了允许你查看已滑过用户的资料,还是一样,这同样是一个付费功能。。 我捕捉到的请求如下,你可以从中查看到已跳过的用户资料。

你只需要将UserID添加到请求中的targetID即可,而被跳过的用户资料将会被点赞。

如果你发现你找错人了,你可以使用下列请求来取消点赞:

6. 谁查看过你的资料

还是一样,这也是一个付费功能。当某人查看了你的资料之后,他们可以选择点赞或狂踩。如果TA喜欢你,你就会收到一条通知消息。

你可以看到,SK喜欢我…如果我也喜欢她(点赞),那我们就“配对”成功了。但是在你“喜欢”她之前,你没办法查看到她的资料,除非你付费了。 不过,你可以使用下列请求获取那些查看了你个人资料的用户信息:

非常好,我拿到了她的UserID。如果我给她点赞的话,我们就配对成功了。

你可以从响应信息中看到,我们已经配对成功了。 但是,这里还有一个问题:我只能跟喜欢我的人配对。那我们是不是可以尝试一下,让任何一个用户都“喜欢“我呢?然后我就可以选择我喜欢的,并跟她完成配对。 没错,这是可以实现的,还是通过参数污染来实现!

7. 选择任意用户实现配对

下面给出的是一次点赞请求的信息:

其中的5318415是我的actorID,如果我将我的actorID改成了其他用户的actorID,我将会得到一条401未授权错误响应。

还是使用参数污染,我添加了两个actorID参数,第一个actorID为目标用户的actorID。这意味着,5024700(目标用户)将会给5318415(我)点赞,而我将得到一条202接受响应信息。

是时候给她也点个赞了,这样才能完成配对。

配对成功啦! 在参数污染技术的帮助下,我就可以在一天时间里让100个美女喜欢我并跟她们配对成功啦!

漏洞披露时间轴

2017年7月4日:将漏洞提交给厂商; 2017年7月4日:漏洞报告已验证; 2017年9月5日:漏洞奖金到手;

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

原文发表时间:2017-12-20

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张伟博客

博客升级HTTPS

16730
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–售前活动(920)-4数量合同

一、 VA41创建数量合同文档 数量合同是客户在指定期间订购一定数量产品的协议。此合同包括基本数量与价格信息,但不包含具体的交货日期或数量计划。客户通过根据协议...

33860
来自专栏FreeBuf

使用Maltego进行互联网情报收集(入门篇)

Maltego是一款十分适合渗透测试人员和取证分析人员的优秀工具,其主要功能是开源情报收集和取证。 比起其它的情报收集工具,Maltego显得格外不同并且功能强...

72070
来自专栏CSDN技术头条

说实话,分布式系统的复杂度远大于它的好处

最近,有一位酷酷的程序员小哥(由网站头像可得)在Hacker Noon网上发表了一篇名为《全面解析分布式系统》的文章。和以往烂大街的分布式教程不太一样,这位小哥...

16220
来自专栏软件测试经验与教训

adb命令

31550
来自专栏云市场·精选汇

如何注册小程序?(附完整注册流程)

方式一:登录微信公众平台(http://mp.weixin.qq.com/),单击右上角的“立即注册”。

35780
来自专栏FreeBuf

Cynet:全方位一体化安全防护工具

1999年,布鲁斯·施奈尔曾说过:“复杂性是安全最大的敌人。”彼时还是19年前,而现在,网络安全已然变得更加繁杂。

11420
来自专栏Crossin的编程教室

关于这波 Intel CPU 漏洞,我见过最形象易懂的解释

新年刚到,科技圈就炸了! 2018年1月2日,Intel CPU 被爆出设计漏洞。AMD 和 ARM 芯片也有一定程度的影响。 漏洞带来的影响主要是: 用户级别...

31190
来自专栏安恒信息

安卓再现系统广播高危漏洞,影响99.9%安卓手机

近日,有博客披露安卓系统存在安卓系统广播漏洞,99.9%的安卓手机将面临安全威胁。恶意程序利用该漏洞,可伪造任意内容的手机短信,及致手机死机,甚至可将手机恢复出...

38960
来自专栏程序人生 阅读快乐

循序渐进Linux(第2版)

《循序渐进Linux(第 2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》从基础知识入手,系统讲解了Linux系统结构、shell、主流服务...

10920

扫码关注云+社区

领取腾讯云代金券