3月29日,360网站安全检测平台发布漏洞警报称,国内大量B2C网上商城正面临高危漏洞威胁,可能导致网站被黑客入侵控制、消费者帐号密码等数据泄露。据悉,这部分网站使用了老版本ECShop网店建站系统,至今未修复一个曝光多年的“本地文件包含漏洞”,为此360网站安全检测平台已通知客户升级ECShop版本,并提供更便捷的代码修复方案。
360网站安全检测平台服务网址:http://webscan.360.cn
据了解,ECShop是业界知名的B2C开源网店系统,适合企业及个人快速构建个性化网上商城。早在2010年4月,ECShop官方版本修复了“本地文件包含漏洞”,但由于大批网站欠缺安全意识,迟迟没有升级到V2.7.2及以上版本,因此才会给黑客长期攻击漏洞的机会,这部分网站比例高达40%。
经360安全工程师分析,旧版ECShop漏洞源于js/calendar/ calendar.php 文件,“由于$lang变量的检测不严。黑客可以绕过一些逻辑判断,将恶意字符串带入include_once包含语句,造成‘本地文件包含漏洞’利用。”
图:360WebScan分析旧版ECShop“本地文件包含漏洞”
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))