漏洞预警 | ECShop全系列版本远程代码执行高危漏洞

作者:网友投稿 时间:2018-09-03 16:31

字号

2018年9月1日,阿里云态势感知发布预警,近日利用ECShop全系列版本的远程代码执行漏洞进行批量化攻击量呈上升趋势。该漏洞利用简单且危害较大,黑客可通过WEB攻击直接获得服务器权限。

漏洞原理

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

首先从user.php文件入手,代码中可以看到,系统读取HTTP_REFERER传递过来的

内容赋值给$back_act变量。

1.jpeg

(/user.php)

1.jpeg

(/user.php)

接着以$back_act的值为参数,调用assign方法。

2.png

 (/user.php)

2.png

 (/user.php)

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

到页面上。接下来跟进display内部的insert_mod方法。

3.png

(/includes/cls_template/php)

3.png

(/includes/cls_template/php)

insert_mod方法返回了一个动态函数调用,该函数名和参数均可控,根据攻击者

的利用方法,我们可以得知调用的函数名为insert_ads,接下来跟进这一方法。

4.png

(/includes/lib_insert.php)

4.png

(/includes/lib_insert.php)

不难发现,$arr['id']和$arr['num']这两个变量,都是外部可控的输入点,在构造攻

击向量的过程中执行的SQL语句如下。

5.png

  (打印$sql变量)

5.png

  (打印$sql变量)

6.png

(sql语句执行结果)

6.png

(sql语句执行结果)

接着,程序调用了fetch方法,参数由$row['position_style']变量赋值,这一变量同样为外部可控输入点。

7.png

(/includes/lib_insert.php)

7.png

(/includes/lib_insert.php)

这里fetch函数调用了危险函数,这就是最终触发漏洞的点。但是参数在传递之前

要经过fetch_str方法的处理。

8.png

(/includes/cls_template.php)

8.png

(/includes/cls_template.php)

最终输入点依次经过fetch_str、select、get_val,最终传入make_var方法。

9.png

 (/includes/cls_template.php)

9.png

 (/includes/cls_template.php)

最终传递到eval的字符串为:

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接