ECShop远程代码执行缝隙安全公告

颁布功夫 2018-09-04

缝隙编号和级别


CVE编号:无,危险级别:高危,CVSS分值:官方未评定


影响版本


ECShop 2.x、ECShop 3.x


缝隙概述


ECShop是一款B2C独立网店系统,适合企业及幼我急剧构建个性化网上商店。系统是基于PHP说话及MySQL数据库构架开发的跨平台开源法式。该网店系统大量用于幼我网店搭建。ECShop开发了独有的高效模板引擎(2.15以前版本使用smarty模板引擎),并结合了Dreamweaver的模板和库职能,使得编纂造作模板变得更单一。用户可凭据自己的需要对ECShop进行定造和扩大。


该缝隙产生的底子原因在于ECShop系统的user.php文件中,display函数的模板变量可控,导致注入,共同注入可达到远程代码执行的成效。使得攻击者无需登录等操作,直接能够获得服务器的权限。攻击者可利用该缝隙直接获取到服务器的最高权限。该缝隙影响ECShop全系列版本,截至目前,官方尚未颁布关于缝隙的新闻及补丁,现阶段利用该缝隙执行批量化攻击的数量正呈上升趋向。


缝隙验证


缝隙的本原在user.php中,先看/user.php中的login操作,能够看到该处代码中的308行用于读取HTTP_REFERER传递的数据,而后将该数据被赋值给$back_act变量。


宝运莱·(中国区)最新官方网站


接着,$back_act变量被assign函数挪用,assign函数用于将表部变量传递给模板函数,而后通过display函数将之显示在页面上。


宝运莱·(中国区)最新官方网站


在/include/cls_template.php文件中找到display函数,该函数中有一个insert_mod函数是关键。


宝运莱·(中国区)最新官方网站


insert_mod函数在1150行,该函数返回一个动态挪用,凭据PoC的细节,我们能够得知挪用的函数名是insert_ads。


宝运莱·(中国区)最新官方网站


跟进insert_ads函数,该函数存在于/include/lib_insert.php文件中:


宝运莱·(中国区)最新官方网站


能够从PoC中发现,$arr['id']和$arr['num']这两个变量,都是表部可控的输入点,在机关攻击向量的过程中用于执行SQL语句。而在函数的最后,挪用了fetch函数,该函数是代码执行中缝隙触发的点。

宝运莱·(中国区)最新官方网站


fetch函数中,存在eval,该函数就是最终缝隙执行的处所,在参数经过fetch_str函数的处置后,最终被执行。


宝运莱·(中国区)最新官方网站


首先凭据提醒装置好ECShop环境(2.7.3版本),而后复现该缝隙,通过Brup Suite抓包新增Referer字段以及Payload后,得到响应包,复现该缝隙,在响应页面成功打印出SQL语句。


宝运莱·(中国区)最新官方网站


而后利用SQL注入缝隙,来复现写入webshell的操作,首先攻击同样是批改Referer字段中的值,参与机关好的PoC,用SQL语句进行号令注入�D芄豢吹阶钪赵诟柯枷绿焐藈ebshell,webshell为1.php文件。


宝运莱·(中国区)最新官方网站


影响领域


国内露出在公网的ECShop数量较大,必要高度器沉。

宝运莱·(中国区)最新官方网站


建复建议


一时处置方式能够批改include/lib_insert.php文件中有关缝隙的代码,将$arr[id]和$arr[num]强造将数据转换成整型,$arr[id]和$arr[num]前参与intval限度。必要批改的处所为:


宝运莱·(中国区)最新官方网站


ECShop 3.6.0建复了以上缝隙,因而建议尽快更新至最新的3.6.0版本。


参考链接
http://ringk3y.com/2018/08/31/ecshop2-x%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C/