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

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

缺陷编号:wooyun-2015-0118566

漏洞标题:金融小能手之平安银行保险大礼包(影响平安保险详细订单用户信息/暴力遍历破解银行密码/xss等)

相关厂商:平安银行

漏洞作者: 咚咚呛

提交时间:2015-06-07 10:18

修复时间:2015-07-23 10:38

公开时间:2015-07-23 10:38

漏洞类型:账户体系控制不严

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

他们都说标题一定要强悍才有人回复,平安银行是中国第一家以保险为核心的金融集团,保险这东西公司基本都会入,与我们息息相关了,那就来让我脱一次保险的裤子吧。
(总结中的语句:)平安银行在我印象中是个大行,虽说比不上四大行吧(建行除外,尼玛等着中枪吧下次就搞你),但是招行、广发这些还能媲美一下子的,安全性方面确实不应该出现下述中的错误。

详细说明:

1、未验证的重定向
测试过程:
首先发现地址修改TargetResource=https://www.baidu.com
https://www.pingan.com.cn/pinganone/pa/accounts_overview/setPFToken.jsp?url=https://www.pingan.com.cn/idp/startSSO.ping?PartnerSpId=bankSP%26TargetResource=https://www.baidu.com 首先他是有domain=.pingan.com.cn判断,直接修改参数url是不成功的,之后它会302跳转到
https://www.pingan.com.cn/idp/startSSO.ping?PartnerSpId=bankSP&TargetResource=https://www.baidu.com 但是参数TargetResource没有验证。最终打开baidu.com

1.jpg


2、XSS跨站脚本
链接:http://notify.youku.com/notify/get.json?uid=1398356088903D8F&types=[%22umc_notice%22]&callback=QheaderModule.updateNoticeNumCallback%3Cscript%3Ealert(1)%3C/script%3E
参数:callback 这参数基本上每个功能都有通用性的。上面提供的xss链接不用登陆可以直接执行js:

2.jpg


3、XSS跨站脚本
链接:https://bank.pingan.com.cn/ibp/work/finance/historyTradeQry.do?pageIndex=1&destCardId=111/%3E%3Cscript%3Ealert(1)%3C/script%3E&buildStartDate=2015-05-01&buildEndDate=2015-06-01 参数destCardId 这个参数也特别常见,还有一些事比如账户ID的参数,如:
https://bank.pingan.com.cn/ibp/work/pension/historyTradeQry.do等等,这些都可以产生XSS,这里就不说了。参数位置都差不多,都是查询类卡号。

3.jpg


4、XSS跨站脚本
登陆个人网银后:
https://bank.pingan.com.cn/ibp/work/finance/historyTradeQry.do?pageIndex=1&destCardId=6230585"><script>alert(1)</script>&buildStartDate=2015-04-29&buildEndDate=2015-05-29
参数:destCardId

4.jpg


5、存储型XSS
账户添加功能中
https://www.pingan.com.cn/pinganone/pa/saveManualAccountJson.do?urlFrom=fromLeft
POST如下数据
{"operation":"add","todayDate":"2015-05-29","oldBeginDate":"","flag":"add","channel":"001","queryPath":"","accountType":"1","cateNo1":"AllSavings","accountName":"222\"<script>alert(1)</script>","amount":"10","currency":"156","relateUrl":"http://baidu.com","urlFrom":"fromLeft"}

5.jpg


在返回浏览多处都会执行js:

6.jpg


6、XSS跨站脚本
https://cz.pingan.com.cn/ibd/index.html#register/register/registerInputToaPage?mobile=222&email=33333111&toaType=1&isCredit=0&isLogin=1&birthDay=&onlineBankUser=1&isRich=0&isMoveMap=null&toaName=111"><script>alert(1)</script>
参数:mobile、email、toaName等都可以产生XSS

7.jpg


7、账户暴力猜解
https://bank.pingan.com.cn/ibp/work/gold/signAgreement1.do
参数acctNo可以暴力猜解账户号码。比如跑后两位100个:

8.jpg


以特征字符 “取款密码错误”|“无效卡号”来区分,可以得到所有有效账户ID。

9.jpg


10.jpg


8、越权查询(个人保单查询)
https://www.pingan.com.cn/cspi-internet/dwr/call/plaincall/QueryPersonDwrService.queryPersonPolMethod.dwr
参数:c0-param0如:c0-param0=string:PC01420333678252 需要把参数
page=/cspi-internet/toa/pension/queryPolList.do的值删掉,这个地址有一定的权限判断机制, 然后就可以按照分单号码来跑数据了。比如:我跑后三位(1000个)单号数据。

11.jpg


12.jpg


可以看到大部分都有客户数据的,如下:

13.jpg


看下页面显示:
随意找个,以PC01420333678370为例,

14.jpg


可以看到详细信息及配偶和子女的详细信息

15.jpg


且查看查看连带人的个人信息,这里也是可以遍历得到所有用户信息的。

16.jpg


9、内网信息泄露
https://www.pingan.com.cn/cspi-internet/toa/pension/insuranceCertificateExportPdf.do?polNo=GP011411&IdNo=11111119111&insuredName=%B9%AE%B6%AC%B6%AC&certNo=PC0142011111 参数随便填点错误号码 泄露内网IP:10.33.88.11

17.jpg


10、xss跨站脚本
链接:
http://www.pingan.com/pa18shopemt/do/apply/period?flowId=B0Kt3LOEGAsqF0Vd&beginDate=2015-06-12111<script>alert(1)</script>&periodUnit=0&applyPeriod=12 参数:beginDate直接赋值<script>alert(1)</script>

18.jpg


11、遍历保险订单号获取用户数据(可以脱裤了)
先说下问题在哪里,问题出在保险订单支付的环节上。

19.jpg


链接:https://www.pingan.com/pa18shopemt/do/payment/gotoPayment?orderNos=201500062459871&payEntry=002 参数:orderNos 为订单号
在支付的过程中发现存在以上链接,测试多次发现证明是订单号,并且返回用户N多敏感数据:

20.jpg


21.jpg


可以看到通过订单号可以直接获取用户姓名、身份证号、电话号码、电子邮箱、购买保险种类、保险金额、购买时间等等敏感信息。
经验判断应该可以跑数据简单脱裤了,给你跑下数据试试就知道了,Burp跑100个吧:

22.jpg


可以看到很完美的就跑出来了,且时间也不长,如果写个python脚本提数据还不是分分秒秒的事。
还有个链接要提下,链接:
http://www.pingan.com/pa18shopemt/do/payment/checkPay.do?shopOrders=201500062459169
这个链接也可以跑订单号,它不同于上个链接,这个链接可以得到订单号的状态,并且返回内容超快,测试Burp跑1000个超级快(线程够大服务不会断链接),特征“不允许支付”表示订单支付完成了,订单不存在它会提示”订单不存在“如图:

23.jpg


24.jpg


25.jpg


最终我还是写了个python脚本,尝试的遍历了一下一个月内的数据。真的很多很多数据啊。。。。

漏洞证明:

同上吧。。。上面说的很详细了。
还是总结下吧:平安银行在我印象中是个大行,虽说比不上四大行吧(建行除外,尼玛等着中枪吧),但是招行、广发这些还能媲美一下子的,安全性方面确实不应该出现上述中的错误,整体安全确实做的相当到位,但是针对重要的安全点方面还是有欠缺,譬如上面出现的越权查询类问题,这些在其他应用中可能算不上高危,但是网银里就算是致命的了。何况还出现了能遍历订单,获取用户数据的现象,希望行方给予关注。
其次就是大量的XSS了,我这里列出的只是其中一小部分,只占我发现的四分之一左右,问题不是出在过滤不严,而是忽视了很多。
另:我测试的只是一些常用功能点(因为我只有这方面数据),不排除其他风险存在。平安银行我还是很看好你的,天天给我发广告,要不我也想不起来测你。。。。

修复方案:

我相信你们应该经常修复类似的洞才对

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2015-06-08 10:38

厂商回复:

感谢对平安银行安全的关注。

最新状态:

暂无