漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0118348
漏洞标题:金融小能手之某银行(看我如何玩转某银行网银查看他人数据越权操作等打包)
相关厂商:大连银行
漏洞作者: 咚咚呛
提交时间:2015-06-05 09:14
修复时间:2015-07-25 08:34
公开时间:2015-07-25 08:34
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-06-05: 细节已通知厂商并且等待厂商处理中
2015-06-10: 厂商已经确认,细节仅向厂商公开
2015-06-20: 细节向核心白帽子及相关领域专家公开
2015-06-30: 细节向普通白帽子公开
2015-07-10: 细节向实习白帽子公开
2015-07-25: 细节向公众公开
简要描述:
大连银行躺枪了,本来测着平安银行来着,结果我媳妇回家说刚办了个大连银行,顺带测了下。
各种问题吧,包含查询任意账户交易详情、任意修改他人账户信息并盗cookie(只要你登陆了必中)、大量XSS、任意工资查询等等吧!
详细说明:
直接写我的测试过程吧,写的有点乱,不过都是随手写的,讲究这看吧!
1、查询任意账户交易明细
在账户资金变动查询功能中,功能本身是具有权限判断机制的,但在下载时链接:
https://ibank.bankofdl.com/perbank/downloadTransferList.do
参数:payAccount 缺乏判断,直接改银行卡号就可以查询相应的交易的细节。
如构造request,账户在网上搜了一个,如6229934110216248671,这里开始时间和结束时间随意填写,可以突破客户端的3个月时间的限制:
可以看到如下时间2014.1.6-2015.6.4的账户变动详情。
2、XSS跨站脚本
功能点:我要赚钱-储蓄-录入信息
链接:
https://ibank.bankofdl.com/perbank/showBuySavingsConfirmPage.do
参数:contractFlag、savingPeriod等等
3、XSS跨站脚本
功能点:我要赚钱-理财-额度查询
链接:
https://ibank.bankofdl.com/perbank/queryProductLimit.do
说明下,本身链接里是不存在xss的,但是发现返回数据包中Response中存在windowId返回值,如下:
给Request添加参数windowId=<script>alert(1)</script>,把post包改为GET,去掉EMP_SID就如下链接(不需要登陆也可以执行js):
https://ibank.bankofdl.com/perbank/queryProductLimit.do?PrdCode=1501173¤tBusinessCode=01000806&EMP_SID=&responseFormat=JSON&channel=1101&version=stanver&windowId=<script>alert(1)</script>
4、XSS跨站脚本
链接:
https://ibank.bankofdl.com/perbank/querySingleBalanceDL.do?accountNo=6229934110216248671¤tBusinessCode=00000504&windowId=1111<script>alert(1)</script>&logRecordFlag=1&EMP_SID=&responseFormat=JSON&channel=1101&version=stanver
参数:windowId(不需要登陆,这个参数好像是通用的,大量的链接里都出现了,这个链接只是举例说明)
直接赋值,GET改为POST直接执行js。其实问题出在Content-Type: text/html,本来返回值是json格式的,但是页面写为了text/html,就直接突破json了。
5、越权查询工资清单
功能点:查询中-特殊业务查询-工资单查询
链接:https://ibank.bankofdl.com/perbank/payrollQuery.do 参数:queryAccNo
本身功能是这样子的我这里的由于没有信息所有事这样子的:
试了多个都是没有数据,一狠心跑末尾3位数1000个,如图:
都是这样子,就在要放弃的时候有一个返回值明显与其他的不一样。如图:
篡改数据后解析后是这样子的:
这里虽说金额都为0.00,但是我有理由相信存在越权查询工资的情况,且时间可以随意制定,只是遍历账户的查询的问题。
6、任意修改他人账户信息(可造成存储型首页XSS)
功能点:我的账户-账户别名设置
链接:https://ibank.bankofdl.com/perbank/modifyAlias.do
参数:accountAlias赋值:11111<script>alert(1)</script>
https://ibank.bankofdl.com/perbank/modifyAlias.do?currentBusinessCode=00000503&accountNo=6230700101500120817&accountAlias=1111<script>alert(1)</script>&logRecordFlag=1&EMP_SID=xxxxx(不好意思此处已删除)&responseFormat=JSON&channel=1101&version=stanver
不仅是个反射还是个存储型,之后每次访问都会触发,且还是个CSRF,比如在内网抓住了session,可以直接构造此链接,没有token限制,CSRF+存储型首页XSS是不是危害性更大点:
我操,玩出个更high的,直接高潮了,可以直接改他人的别名。
比如账户:6229934110216248671举例,直接成功,我是不是可以直接写xss玩了,是不是可以通杀所有账户了!!!!!!!
拿自己做个试验看看,比如随别找个XSS平台
就这样子COOKIES到手,就可以通杀所有账户了。
7、XSS跨站脚本
功能点:预留信息验证
链接:
https://ibank.bankofdl.com/perbank/preSettingMessageUpdate.do?ec=0&em=&newCustomerMessage=2111"><script>alert(1)</script>&customerMessage=&privateQuestion=&privateQuestionAnswer=&flag=&sequenceNo=1000000000009133717&windowId=44b68d52-b1e4-b520-bbbc-aa44383f1a37¤tBusinessCode=00500200&passwordEncrypted=&security=00000&tokenType=1&mvcId=ae4e3671-7498-20a6-e2fb-3a4207f8882d&logRecordFlag=1&EMP_SID=GIDIBQDWDZEMCWEGJEDDASHXCMCIAXHAEWIMBXCK&responseFormat=JSON&channel=1101&version=stanver
参数:newCustomerMessage,(注:由于服务端会对参数sequenceNo做校验,算是半个token,只校验是否重复出现,不会准确校验是否正确,据测是一直+1,故只需修改为任意值即可绕过)
漏洞证明:
总结下吧:系统其实本身的越权防护机制还是听完善的,不过对3功能4功能缺失的就很厉害了。针对XSS,代码上有一定的过滤,且成功的对影响了渗透测试,但是由于对JSON返回页面的不安全配置,造成XSS通杀,且不需要登陆权限。
我以上只是简单测试了一下,由于是新卡很多数据都不存在,对测试会造成很大影响。所以希望行方谨慎对待,还有一点要提下,对外转账的金额以及账户是可以篡改的,由于U盾是后加密所以可以绕过U盾的加密篡改成功,此漏洞不适用于乌云,但121文件中明确规定了金融领域对此问题的要求,所以这里要提下。不好意思这次你们中枪了。。。。。
让我吐槽下乌云:要是能写个解析word的就好了,一般渗透记录都是随手记录在word中的,且截图都是直接粘贴进去了,在写详细说明的时候特别的蛋疼。 还有我一直没搞明白详细说明跟漏洞证明有啥子关系。。。这玩意是不是性质有点重叠!
修复方案:
详细说明里讲的很清楚了,程序员应该会修复。
版权声明:转载请注明来源 咚咚呛@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2015-06-10 08:32
厂商回复:
CNVD确认并复现所述情况,已经转由CNCERT下发给辽宁分中心,由其后续协调网站管理单位处置.按多处风险进行评分,rank 20.相关风险也需引起其他同行业单位重视,建立加精华. @xsser @疯狗
最新状态:
暂无