旧版ECShop漏洞影响众多B2C商城 (修复方案如下)

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家

据了解,ECShop是业界知名的B2C开源网店系统,适合企业及个人快速构建个性化网上商城。早在2010年4月,ECShop官方版本修复了“本地文件包含漏洞”,但由于大批网站欠缺安全意识,迟迟没有升级到V2.7.2及以上版本,因此才会给黑客长期攻击漏洞的机会,这部分网站比例高达40%。

  经360安全工程师分析,旧版ECShop漏洞源于js/calendar/ calendar.php 文件,“由于$lang变量的检测不严。黑客可以绕过一些逻辑判断,将恶意字符串带入include_once包含语句,造成‘本地文件包含漏洞’利用。”

360安全工程师表示,黑客借该漏洞可能获取网站服务器内敏感信息,甚至执行任意代码,进而获取应用程序和服务器权限,对B2C电商网站用户数据和账户信息形成威胁。同时由于漏洞曝光日久,漏洞原理和攻击方法已广泛传开,这类“老漏洞”往往更容易吸引大批黑客入侵。

  为保护电商网站业务和消费者数据安全,360建议使用旧版ECShop系统的电商网站立即升级至官方最新版本,或修改代码来封堵漏洞,方法如下:

  打开 js/calendar/ calendar.php 文件,找到文件判断位置:

  if (!file_exists('../languages/' . $lang . '/calendar.php'))

  {

  $lang = 'zh_cn';

  }

  按照ECShop官方解决方案将if语句修改为:

  if (!file_exists('../languages/' . $lang . '/calendar.php')    strrchr($lang,'.'))

  或采取360解决方案修改代码如下:

  if (!file_exists('../languages/' . $lang . '/calendar.php')    !in_array($lang,array("en_us","zh_cn","zh_tw"),true))

回答:
楼主提供的方法写法有问题!正确的应该是“if (!file_exists('../languages/' . $lang . '/calendar.php') || strrchr($lang,'.'))”

这个官方早就补上了噢

有这个js/calendar/ calendar.php 文件么

好用的分享需要支持一下!辛苦楼主了