freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

挖洞经验 | 美国交友软件OkCupid平台的个人信息泄露漏洞
2020-10-30 16:18:18

OkCupid,美国免费的在线征婚交友和社交网站,拥有超过5000万注册用户,其中大多数年龄在25岁至34岁之间,是全球最受欢迎的约会平台之一。OkCupid支持多种通信模式交流,包括即时聊天APP和电子邮件。2007年,OkCupid网站被时代杂志评为世界十大交友网站之一,2011年2月,OkCupid被Match.com运营商IAC/InterActiveCorp以5000万美元收购。

OkCupid可根据会员自身填写的相关信息,经后台算法匹配,推荐适合的约会对象,完成配对牵线。当然了,个人信息不仅方便了恋爱配对,也一直是黑客眼中的宝藏。近期,Checkpoint安全团队就针对OkCupid的移动应用和网站平台安全性开展了测试,发现了以下严重漏洞:

APP存在会员个人敏感信息泄露;
可用受害人身份执行恶意操作;
可窃取用户会员资料、以及爱好个性等隐私数据;
可窃取用户身份校验Token、用户ID、注册邮箱等信息;
可窃取用户数据并转发至攻击者控制端。

移动应用APP平台

Checkpoint对OkCupid的安卓APP(v40.3.1)进行了逆向分析,在此期间发现其APP会开启一个WebView组件(可用来在WebView窗口环境中执行JS代码),并会加载形如https://OkCupid.com, https://www.OkCupid.com, https://OkCupid.onelink.me等样式的远程链接。

危险的深度链接

Checkpoint发现OkCupid APP存在“https://OkCupid.com”和“OkCupid://”通用样式的“深度链接”功能:

基于上述通用链接(Custom link),由于其中包含了“section”参数,所以攻击者可以就此构造形如以下的通用链接形式发送给受害者,引诱受害者打开一个webview窗口程序,并在此期间执行任意JS代码:

反射型XSS漏洞

Checkpoint还发现了OkCupid 主站https://www.OkCupid.com存在一个XSS漏洞,XSS注入点位于用户资料设置处:

https://www.OkCupid.com/settings?section=<value>

其中的section参数存在可被注入JS代码的问题,在OkCupid APP请求交互时可触发XSS。由于上述我们提到WebView被开启后可执行JS代码,因此这里我们利用该XSS漏洞,在经身份验证的受害者APP中触发了一个空弹窗:

敏感信息泄露 & 可用受害人身份执行恶意操作

基于上述的XSS漏洞和OkCupid使用的深度链接,我们可用OkCupid://方式启动OkCupid APP,然后在section参数处构造加入恶意JS脚本代码进行深入测试。以下图例为最终构造的XSS Payload,其可以从攻击者控制端加载jQuery和JS代码,上半部份为原始XSS Payload,下半部份为URL编码后的XSS Payload:

利用该XSS Payload在前述XSS漏洞的section参数处发起HTTP GET请求:

请求发出后,会在OkCupid服务端的WebView窗口环境中注入以下JS代码:

由于XSS payload中会加载攻击者控制端中的js脚本文件script.js,该脚本文件包含以下三种功能模块,可以窃取渗漏受害者的用户信息:

steal_token – 窃取受害者用户的身份验证Token、oauthAccessToken、userid,包含注册邮箱在内的用户个人信息(PII)等;

steal_data – 窃取受害者用户个人资料、隐私数据、爱好个性等信息;

Send_data_to_attacker – 把上述窃取的数据信息发送到攻击者控制端。

steal_token 功能模块

该模块会创建一个调用OkCupid服务端的API接口,由于XSS Payload触发WebView窗口,当受害者点击执行后,其Cookie信息将会被窃取并发送至攻击者控制端:

OkCupid服务端对上述请求的响应为以下包含用户ID和身份验证Token的JSON格式信息:

Steal data模块

该模块创建了一个针对https://www.OkCupid.com:443/graphql的HTTP请求,结合steal_token窃取的受害者信息,该请求会在其中带入用户ID和身份验证Token为请求参数:

OkCupid服务端对该请求的响应,包含了受害者个人资料、注册邮箱、性别取向、身高和家庭状况等:

Send data to attacker模块

该模块会向攻击者控制端发送一个POST请求,其中会包含steal_token和steal_data模块所有窃取数据,以下为该POST请求截图:

由于攻击者可以窃取受害者的身份Token和用户ID,因此,可用受害人身份执行恶意操作,如向其他用户发送虚假信息、更改个人资料,因为steal_token模块中包含了以下受害者信息:

身份校验令牌Authentication token、oauthAccessToken;
User id、userId

Note:由于Cookie中设置了HTTPonly属性,因此攻击者不能完全劫持受害者账户。

网站系统漏洞

配置错误的CORS策略可导致敏感信息泄露

在测试中Chekcpoint团队发现,OkCupid的API接口服务器api.OkCupid.com存在不当的CORS策略配置,可以导致跨源请求。Chekcpoint构造了origin为https://OkCupidmeethehacker.com的虚假请求源,向OkCupid API接口服务器api.OkCupid.com发起了GET请求:

可见,OkCupid API接口服务器api.OkCupid.com未恰当校验OkCupidmeethehacker.com的origin有效性,就做出了成功的响应,并且还在响应中返回了有效的Access-Control-Allow-Origin头消息:

Access-Control-Allow-Origin: https://OkCupidmeethehacker.com
Access-Control-Allow-Credentials: true

为此,Chekcpoint可以从其控制的域名OkCupidmeethehacker.com,向OkCupid API接口服务器api.OkCupid.com发起不受CORS限制的请求。比如,如果受害者是已经登录OkCupid相当应用服务,且经身份认证的用户,一旦浏览到攻击者架设的网站(如这里的https://OkCupidmeethehacker.com),就可用受害者身份(authentication token和user_id)向api.OkCupid.com发起请求https://api.OkCupid.com/1/native/bootstrap:

从api.OkCupid.com中我们还能发现更多有意思的数据:

以下为用受害者身份(user_id和access_token:)请求/profile/路径获得的受害者个人信息:

以及用受害者身份(user_id和access_token)请求/1/messages/路径获得的受害者所发信息:

总结

最近几年,随着在线社交交友APP应用的兴起,线下生活逐渐向线上数据转型成熟,尤其是在全球疫情期间,保持社交距离的新常态更让在线社交APP风靡流行。然而,在这些受欢迎的APP应用中,却存在着各种个人信息、隐私数据泄露的安全隐患,对隐私和数据安全的迫切需求已经变得尤为重要。

参考来源:

Checkpoint


# 美国交友软件OkCupid # 个人信息泄露漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录