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曲速未来提醒:该漏洞利用难度低,影响面广,并已经发现有批量入侵迹象,存在相关业务的用户及时关注并进行修补。
领取专属 10元无门槛券
私享最新 技术干货