WordPressのハッキング(改ざん)被害がまた増えてますね
検索エンジン等から飛んできた場合にのみ悪意のあるスクリプトが動き、詐欺通販サイトにリダイレクトされるといった類のものが多いです。
とりあえず、
site:example.co.jp
みたいにGoogleで検索してみるのが良いと思います。
変な商品ページが自分のサイトの検索結果に出てきたら改ざんされてます。
気づきにくい理由
管理者や良くサイトにアクセスする人は、URL履歴やブックマークから直接サイトアクセスするので、気づかないケースが多かったです。
ただ、最近のハッキング手法は、WordPress従来の機能に制限をかけるものが増え、管理画面にログインしようとしたら403エラーになるといったケースが目立ちます。
直接的な改ざんの見つけ方
・WordPressのインストールディレクトリ直下に以下のようなファイルがある。
about.php、admin.php
・index.phpの記述がおかしい。
本来は以下の記述のみですが、暗号化された文字列が埋まってたりします。
・index.phpのタイムスタンプが直近の日時になってる。
数秒単位でこのファイルが書き換えられてます。
共用サーバでの複数サイト運用をされてる方は多いと思います。
直近で対応したWordPressのハッキング対応も、そのケースでした。
こういう場合、スクリプト潰しの難易度が上がります。
今回のケースで困ったのは、複数サイトにまたがってファイル改ざんをする仕組みだったことです。そして、悪意のあるプログラムはどこかのサイトの中にだけいるのでなく、分身がいるような状態。
1つ潰しても、分身が別の分身を作ります。
「一度に全ての敵を倒せばいいんだ!」という漫画のような解決が、共用サーバでは難しくなります。
基本的にはサイトを全て止める必要が生じます。
復旧の難しさ
バックアップがあれば、一度WEB上のファイルを全て消して、被害に遭う前のファイルを復元すれば良いです。
でも、共用サーバのバックアップは長くて2週間程度ですよね。
しかも、今回の改ざん、ニセのWordPressディレクトリまで作ってきました。
共用サーバの自動バックアッププログラムは、そのディレクトリは対象にしてくれないケースがあります。
サイトを復元したら、またそのニセWordPressが動いてしまいます。
独自サーバ(サーバの全権限を持っている)の場合は割と簡単に対応できます。Apache(アパッチ)やNginx(エンジンエックス)のプロセスが一時的に動かないようにできます。悪意のあるプログラムも動きません。
※WEBプログラム以外の、シェルスクリプト等が埋め込まれる別のリスクはあります。
共用サーバの場合、ApacheやNginxを止めることはできません。
他の契約ユーザもぶら下がってるからですね。
共用サーバの場合
基本的には.htaccessファイルで自分自身からのアクセスだけに絞ってみます。
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx ←自分のIP
Apache2.4以降であれば、
Require ip xxx.xxx.xxx.xxx
最近見られるWordPressのハッキングプログラムも、WEBへのリクエストが届かない限りは動かないものが殆どのようです。
以降の流れ
①wp-admin,wp-includesフォルダを退避
wp-admin.bak,wp-includes.bakにリネームします。
②.htaccessファイルを全て消す
※wp-admin.bak,wp-includes.bak配下は、フォルダ毎削除するので無視。
※WordPressインストールディレクトリ直下のものをカスタマイズしてて、問題のある記述が見当たらなかったら残す。
※問題があるかどうかの見極めポイントは色々ある。
=>共用サーバで一括で.htaccessを消すのはSSHコマンドを使えない場合は、ローカルにダウンロードしてきて一括削除して上げなおすしかないかと。
③インストールディレクトリ直下のファイルを、同じバージョンのWordPressのオリジナルファイルで上書きする。
※バージョンは/wp-includes/version.phpに書かれてる。
④wp-admin,wp-includesフォルダも、同バージョンのオリジナルのWordPressで上書きする。
⑤ほかに改ざんされているファイルが無いか確認する
=>ここはもう、知識のある人間に頼るしかないと思います。
数千あるフォルダの全てについて確認するため、改ざんタイミングのタイムスタンプや、正規表現での全件検索など色々行います。
⑥管理画面にログイン
ログインできるようになったら、wpdoctor等のプラグインをインストールして不足している駆除があれば見つけられます。
⑦.htaccessの記述を再確認
IP制限してたら戻します。
他にすること
・サイトに関わる全てのパスワードの変更(レンタルサーバのIDのも)
・WordPressの管理者ユーザ名変更
・事前、事後の全フォルダのバックアップ
・データベースレコードの検証
・Googleに不正インデックスされた検索結果の削除
・セキュリティー担保のための措置
・定期バックアップ用プラグインのインストール&動作確認
そうならないように
とまあ、色々あるので、そうならないように常日頃からレンタルサーバ環境の外に独自のバックアップを保存することと、セキュリティーチェックを運用に組み込むことが大事だと思います。
大手のコーポレートサイトのWordPressでも、改ざんされてる例をたまに見かけます。多分当事者は気づいて無さそうです。
ではまた。