易企CMS(yiqicms)是国内知名的营销型企业建站系统,基于PHP+MySQL开发。免费开源,对SEO较为友好。近日,阿里的补丁监控平台Diviner监测到yiqicms在特定情况下被Getshell的漏洞。

0x01 背景

出现该漏洞的程序来自yiqicms1.8以下版本,在某些Web套件中可触发Getshell漏洞。

0x02 分析 <?php error_reporting(E_ALL ^ E_NOTICE); header("content-type:text/html; charset=utf-8"); require_once '../include/file.class.php' $step = $_GET["step"]; $action = $_POST["action"]; if($action == "save") //未采用install.lock类似机制验证机制,进入安装过程,可能导致重装 { $dbhost = $_POST["dbhost"]; $dbname = $_POST["dbname"]; $dbuser = $_POST["dbuser"]; $dbpass = $_POST["dbpass"]; $dbprefix = $_POST["dbprefix"]; $adminuser = $_POST["username"]; $adminpass = $_POST["userpass"]; if(empty($dbpass)) { ….省略若干行 $dbpass= ""; } $configsource = "<?php \n\$cfg_db_host = \“$dbhost\”;\n\n". $dbhost采用”号,可通过植入特殊的密码或者数据库名传入恶意的数据到$configsource ….省略若干行… "\n?>"; if(file_exists("../include/config.inc.php")) { rename("install.php","install.php.bak");//将install.php重命名为.bak,在特定情况下存在解析漏洞时,可直接利用install.php.bak进行安装Getshell } $filedata->writefile("../include/config.inc.php",$configsource); //直接将数据写入/include/config.inc.php Getshell。 exit("<script>window.location='install.php?step=finish';</script>"); } ?> 0x03 利用

当服务器存在iis 7.0/7.5或nginx的畸形解析漏洞时,可以采用直接访问/install/install.php.bak/.php的方式重新激活安装。然后使用特殊的密码闭合文件,植入恶意代码到/include/config.inc.php。

0x04 修复

目前,官方已经在1.8版本中修复该漏洞,请下载易企CMS最新版程序(1.8纪念版)。

如果您是想在1.8版本升级至1.8纪念版的话,请下载1.8升级1.8纪念版本补丁。