交易所安全系列 — 谈信息泄露

玩技站长
玩技站长
管理员, Keymaster
11055
文章
0
粉丝
测试资讯评论132字数 1944阅读6分28秒阅读模式
摘要对于交易所来说,不辜负用户的信赖,保护好用户给予的个人信息,应该是安身立命之本。对于开发人员来说,要做好差别对待,保护好代码安全,

对于交易所来说,不辜负用户的信赖,保护好用户给予的个人信息,应该是安身立命之本。

对于开发人员来说,要做好差别对待,保护好代码安全,给用户良好体验的同时,不要攻击者有着同样良好的渗透体验。文章源自玩技e族-https://www.playezu.com/194357.html

一、交易所安全信息泄露概述

信息泄露在安全审计中屡见不鲜,对于存有大量用户 KYC 信息的交易所来说影响更加深远,是非常严重的安全问题。零时科技安全团队在审计大量交易所后发现,信息泄露问题一般集中于交易所的账户体系、OTC 交易系统、用户订单、邀请列表和网站源代码等地方。造成信息泄露的主要原因一般是由于服务器响应包内容没有经过处理就将用户的所有信息返回,配合其他漏洞甚至可以批量的获取用户敏感信息,除此以外,对善于掘金的攻击者来说网站前端源码可谓是遍地黄金,大量敏感信息的注释(测试账户、内网 IP、测试地址、测试 token 等等)没有在进入生产环境时被删除。文章源自玩技e族-https://www.playezu.com/194357.html

二、测试列表

信息泄露包含的内容有:文章源自玩技e族-https://www.playezu.com/194357.html

  • KYC 信息泄露
    • 登录注册
    • 忘记密码
    • 邀请列表
    • OTC 交易系统
    • 用户订单
  • 前端源码信息泄露
    • 测试数据泄露
    • 敏感信息泄露
    • API 接口泄露
  • Github 信息泄露
    • 数据库文件 / 连接凭据
    • 敏感信息泄露
  • 敏感文件信息泄露
    • robots.txt
    • crossdomain.xml
    • sitemap.xml
    • .git/.svn/.bak

三、案例分析

KYC 信息泄露

在业务逻辑文章中曾经讲过 KYC 认证缺陷 ,指的是用虚假以及非法的信息来绕过交易所的 KYC 认证。而对于使用真实 KYC 信息认证的用户,KYC 信息本身的安全性显得尤为重要。文章源自玩技e族-https://www.playezu.com/194357.html

忘记密码

某交易所在用户忘记密码时未对响应包进行处理,当输入邮箱或者电话号码进行找回密码操作时,服务器将用户的 uid、mobile、name、nickname、email、qq、wexin、identitycardnon(身份证号)以及 googlesecret 一并返回,造成了极其严重的 KYC 信息泄露:文章源自玩技e族-https://www.playezu.com/194357.html

交易所安全系列 — 谈信息泄露插图
文章源自玩技e族-https://www.playezu.com/194357.html

泄露邀请列表

某交易所在用户查看邀请人列表时没有对服务器响应包内容进行处理,导致查看邀请列表时会泄露所有被邀请人的 KYC 信息包括 uid、mobile、name、nickname、email、qq、wexin、identitycardnon(身份证号)以及 googlesecret 等。利用存在的越权漏洞,可以遍历收集所有被邀请用户的 KYC 信息:文章源自玩技e族-https://www.playezu.com/194357.html

交易所安全系列 — 谈信息泄露插图1
文章源自玩技e族-https://www.playezu.com/194357.html

注:由于敏感性原因暂不放出收集结果以及具体细节文章源自玩技e族-https://www.playezu.com/194357.html

OTC 查看商家 / 订单

某交易所在用户查看 OTC 订单处存在信息泄露,服务器的响应包里将商家的 id、qq、alipay、whatsApp、nickname、mobile、wechat、telegram、username、realname、skype 和 email 全部返回,只要遍历订单就可以获得所有商家的个人信息:文章源自玩技e族-https://www.playezu.com/194357.html

交易所安全系列 — 谈信息泄露插图2

信息泄露攻击链

零时科技安全团队在对某交易所进行安全测试时发现,该交易所在用户查看 OTC 商家的信息时,遍历 userid 便可以获得所有商家用户的 phone、username 和 nickname。收集到所有泄露的商家 phone 后,经过测试又在忘记密码处发现信息泄露,只要输入手机号就可以获得商家的 userid 以及 email,通过两个信息泄露漏洞构成的攻击链同时进行收集,最终收集到所有商家用户的真实姓名、电话号码、邮箱地址以及昵称。

下图为通过遍历 userid 获取所有商家的 phone 和 username:

交易所安全系列 — 谈信息泄露插图3

下图为通过收集到的手机号码来获取商家的 email 以及 userid:

交易所安全系列 — 谈信息泄露插图4

也许某个点的信息泄露看起来微不足道,一旦点与点之间连成线,对于攻击者来说这两个点确定的可不只是一条有始有终的线段,而当这条攻击链被利用起来的时候,便是条有始无终,直至目标的射线。

源码信息泄露

在开发过程中,开发与测试人员为了能够更加轻松地了解以及调试代码,通常在开发与测试阶段在代码中留下大量注释信息,其中不乏有测试用 IP 地址,测试端口,测试用账户,测试用 token(用与身份认证的 token,不是指数字货币 ERC20 token)和测试用 API 等等。

编写注释对于广大开发与测试人员可以提高代码的易读性以及开发效率,可算是与人方便,与己方便的好习惯。可一旦这些方便的注释经过开发环境、测试环境到达了生产环境,在公网上暴露出来,方便的可就不只是兢兢业业的开发者与测试者,还有在黑暗中隐藏行踪,时刻紧盯着目标的攻击者们。

在经过对大量交易所测试后发现,开发与测试人员可能是世界上最具有开源精神的一批人,有的喜欢将自家网站的内网拓扑以及测试接口开源出来供大家欣赏。

某交易所源代码中存有大量含有测试用接口,IP 地址的注释:

交易所安全系列 — 谈信息泄露插图5

有些喜欢将自家的加密的密钥开源出来供大家使用。

某交易所源代码中含有 AES 加密的硬编码密钥,导致数据加密被破解:

交易所安全系列 — 谈信息泄露插图6

而有些不仅直接将自家测试用 token 放到源码里,还向账户里进行充值,可谓是:“弱水三千,任君自取”,不过君是不是 “只取一瓢饮” 那可就不知道了。

某交易所源码中含有测试用 JWT,修改后可成功登录账户,控制资产:

备注:Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准。 该 token 被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 token 也可直接被用于认证,也可被加密。

交易所安全系列 — 谈信息泄露插图7

使用测试用 JWT 登录账户,控制资产:

交易所安全系列 — 谈信息泄露插图8

诚然,详细而又全面的注释是开发与测试人员良好的代码编写习惯,不过要记得在经过开发环境与测试环境后,进入生产环境之前,将所有可能会暴露到外界的含有敏感信息注释删除,以防敏感信息泄露。在 GitHub 上开源是好事,但也要记得上传之前仔细检查,不要将自家的数据库地址与密码一同开源出去。


对于交易所来说,不辜负用户的信赖,保护好用户给予的个人信息,应该是安身立命之本。

对于开发人员来说,要做好差别对待,保护好代码安全,给用户良好体验的同时,不要攻击者有着同样良好的渗透体验。


注:以上所有测试均已经过相关交易所授权,请勿自行非法测试。

 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证