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语句举行下令注入 �?梢钥吹阶钪赵诟柯枷绿焐藈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/