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全系列版本,阻止现在,官方尚未宣布关于误差的新闻及补丁,现阶段使用该误差实验批量化攻击的数目正呈上升趋势。
误差验证
接着,$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函数,该函数是代码执行中误差触发的点。
首先凭证提醒装置好ECShop情形(2.7.3版本),然后复现该误差,通过Brup Suite抓包新增Referer字段以及Payload后,获得响应包,复现该误差,在响应页面乐成打印出SQL语句。
然后使用SQL注入误差,来复现写入webshell的操作,首先攻击同样是修改Referer字段中的值,加入结构好的PoC,用SQL语句举行下令注入�?梢钥吹阶钪赵诟柯枷绿焐藈ebshell,webshell为1.php文件。
影响规模
修复建议
暂时处置惩罚方法可以修改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/


京公网安备11010802024551号