漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0116862
漏洞标题:科蓝网上银行系统本地文件包含通用漏洞(涉及百家国内银行网银系统)
相关厂商:科蓝软件系统有限公司
漏洞作者: Drizzle.Risk
提交时间:2015-05-29 10:05
修复时间:2015-07-18 08:30
公开时间:2015-07-18 08:30
漏洞类型:文件包含
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-05-29: 细节已通知厂商并且等待厂商处理中
2015-06-03: 厂商已经确认,细节仅向厂商公开
2015-06-13: 细节向核心白帽子及相关领域专家公开
2015-06-23: 细节向普通白帽子公开
2015-07-03: 细节向实习白帽子公开
2015-07-18: 细节向公众公开
简要描述:
本地文件包含漏洞,可读取网银业务系统任意文件。
通用型漏洞,利用简单,涉及百家国内银行的网银系统,故风险较高。
附案例。
详细说明:
背景:
_viewReferer是之前测试CSII的网银时发现的一个隐藏的参数,伴随着CSII开发的网银的各个功能进行传递,根据测试与观察,判定其功能为页面出现错误时,需要跳转加载的某JSP页面,其值是预先设置的,可能是错误处理提示页面,也可能是上一个功能页面。
Tips:以下截图出自多家银行。
测试发现,我们可以强制给某个页面传递_viewReferer参数,并尝试覆写其值。
例如:默认的预登录页面是没有_viewReferer参数的,我们直接加上,并尝试覆写。
在极小部分的Response中可以明显观察到,该参数值被覆写,但更多情况是,在Response中观察到覆写“失败”,该值未变化:
但经过反复测试,实际上,覆写是几乎每次都可以成功的。因为_viewReferer加载JSP页面是有前提的,就是本身的页面出错,那么我们可以尝试构造错误,例如删掉某个参数,或给某个参数赋一个畸形的值,这样程序就会尝试去加载_viewReferer指定的那个JSP,又因为_viewReferer的值被我们覆写了,故我们可以控制程序去加载任意该目录下的JSP文件(不一定每个页面都会被我们构造的畸形数据引发程序错误,但概率很高,多找几个页面几乎100%能找到)。
如下图所示,删除了某个参数,诱发程序报错,程序乖乖报错,由于并且我们覆写了_viewReferer参数,故程序尝试加载我们覆写的文件名:
有时候是自定义错误页面,但不影响漏洞的利用:
本来此漏洞就是个单纯的变量操纵,但由于CSII程序设计该参数的目的本身就不是为了让用户控制,故未进行数据有效性校验,所以我们接着测试,顺便加上截断符号,读到了根目录下js文件夹下的js文件:
以上部分,个人随机测试了多家银行,就单单测试登录页面,存在此风险(本地文件包含漏洞)的就有2/3左右,要是考虑到登录后的业务功能页面,几乎可以全中。
理论部分就说到这儿了。
漏洞证明:
接下来,系统的安全就看运维人员的负责程度了。
读取敏感配置文件,并不是所有银行都可以,随便试了几家,找到一个权限配置有问题的:
读取web.xml(连网银登录都不用哦):
因为该漏洞不是具体某个特定银行的,故未利用此漏洞进行进一步测试,不过可以肯定,有很多银行都可以任意敏感配置文件读取(运维总有偷懒的时候)。
检测此漏洞,可以尝试用_viewReferer加载读取根目录下的:/js/common.js 或其他资源文件。
这个漏洞广泛存在,千万不要只在登录页面测一下完事儿,可以换个页面(注册、信用卡之类),最好是登录网银后的查询页面。
修复方案:
由于此漏洞波及范围过大(广义上来看涉及百家银行的个人网银和企业网银系统),故个人认为风险极高,希望厂商重视,尽快修复此漏洞。
版权声明:转载请注明来源 Drizzle.Risk@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2015-06-03 08:28
厂商回复:
CNVD确认并复现所述情况,先行由CNVD向软件生产厂商通报,针对银行案例的测试工作还正在进行中,先期已经向国内多个股份银行通报了漏洞情况,并请其自行测试.
最新状态:
暂无