易企CMS(yiqicms)是国内知名的营销型企业建站系统,基于PHP+MySQL开发。免费开源,对SEO较为友好。
近日,阿里的补丁监控平台Diviner监测到yiqicms在特定情况下被Getshell的漏洞。安全脉搏胖编辑觉得又会有小伙伴写各种插件到各种平台了~~~
出现该漏洞的程序来自yiqicms1.8以下版本,在某些Web套件中可触发Getshell漏洞。
<?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>"); } ?>
当服务器存在iis 7.0/7.5或nginx的畸形解析漏洞时,可以采用直接访问/install/install.php.bak/.php的方式重新激活安装。
然后使用特殊的密码闭合文件,植入恶意代码到/include/config.inc.php。
目前,官方已经在1.8版本中修复该漏洞,请下载易企CMS最新版程序(1.8纪念版)。下载地址:
http://down.yiqicms.com/files/yiqicms-v18final.zip
如果您是想在1.8版本升级至1.8纪念版的话,请下载1.8升级1.8纪念版本补丁:
http://www.yiqicms.com/article/yiqicms-18to18final-pack.html
阿里巴巴安全研究实验室,隶属于阿里巴巴集团-基础安全部,致力于前沿安全威胁研究,力争成为世界顶级的安全研究机构。
【原文:易企CMS特定情况下Getshell漏洞分析 作者:扶夙 conqu3r 安全脉搏编辑整理发布】