易企CMS特定情况下Getshell漏洞分析

华盟原创文章投稿奖励计划

 易企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纪念版本补丁。

原文地址:https://exploits.77169.com/2015/20150330234328.shtm

本文原创,作者:华盟君,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/22616.html