WF曲速未来警惕:ECSHOP多个版本远程代码执行漏洞

WF曲速未来消息:8月31日,流行的购物系统——ECSHOP被曝出远程代码执行漏洞。攻击者可利用代码执行漏洞远程在服务器上执行命令,从而控制服务器,获取敏感数据,甚至导致内网沦陷。

WF曲速未来消息:8月31日,流行的购物系统——ECSHOP被曝出远程代码执行漏洞。攻击者可利用代码执行漏洞远程在服务器上执行命令,从而控制服务器,获取敏感数据,甚至导致内网沦陷。该漏洞在2017就已经存在,最近才被公布,相关用户最好进行安全检查,及时确认是否被入侵并修复漏洞并去掉后门。ECShop是国内最流行的购物系统之一。是上海商派网络科技有限公司(ShopEx)旗下的B2C独立网店系统,基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。建议使用该系统的用户及时检查是否存在该漏洞,避免造成损失。

分布概况

目前根据FOFA统计,全球共计有21450个ECSHOP的用户;

下面是全球分布情况(非漏洞影响情况),其中中国最多,大概有18400个,美国1735个,其他国家用户数量不多于300:

下面是全球分布情况(非漏洞影响情况),其中浙江10563,北京2227,广东738,河南655:

漏洞分析

远程代码执行漏洞

该漏洞产生的根本原因在于ECShop系统的user.php文件中,display函数的模板变量可控,导致注入,配合注入可达到远程代码执行的效果。使得攻击者无需登录等操作,直接可以获得服务器的权限。

首先从user.php文件入手,代码中可以看到,系统读取HTTP_REFERER传递过来的内容赋值给$back_act变量。接着以$back_act的值为参数,调用assign方法。

assign方法的作用是把可控变量传递给模版函数,紧接着再通过display方法展示到页面上。

接下来,跟进dispaly方法,再display中又调用了insert_mod方法

insert_mod方法返回了一个动态函数调用,该函数名和参数均可控,根据攻击者的利用方法,我们可以得知调用的函数名为insert_ads,接下来跟进这一方法。

不难发现,$arr['id']和$arr['num']这两个变量,都是外部可控的输入点,在构造攻击向量的过程中执行的SQL语句如下。

调用了fetch方法,参数由$row['position_style']变量赋值,这一变量同样可控。

这里fetch函数调用了危险函数,这就是最终触发漏洞的点。但是参数在传递之前要经过fetch_str方法的处理。

经过fetch_str、select、get_val,make_var方法,最终执行代码。这里说一下,如果存在代码执行,则肯定存在SQL注入,但对于利用的便捷性,还是代码执行用起来比较方便。

最终payload,会生成666.php,密码1233

到此,漏洞原理分析完成,攻击者的恶意代码执行成功。

修复建议:

1 在官网上下载ECSHOP最新版。

2 在文件中140,271,370行加上如下两行代码把可控变量进行强制类型转换即可。

区块链安全实验室WF曲速未来提醒:该漏洞利用难度低,影响面广,并已经发现有批量入侵迹象,存在相关业务的用户及时关注并进行修补。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904A1MMN900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券