セキュリティ 2024.06.27

ハッキングから自力復旧!WordPressサイトを正常に戻す手順を解説

この記事を書いた人

土井 純也

WordPressスペシャリスト・エンジニア/株式会社e2e 取締役 / CTO

1985年北海道生まれ。
200社以上の大手上場企業のWordPressサイトの制作、保守・セキュリティをサポートしている。

【 展開しているサービス一覧 】
■WordPress開発サービス「wp.make
■WordPress保守/運用サービス「wp.support
■WordPressハッキング/緊急復旧対応サービス「wp.rescue
■WordPressバージョンアップ代行サービス「wp.versionup

WordPressサイトがハッキングされた!?

自分のサイトがハッキングされたら焦るのは当然ですが、一旦、落ち着きましょう。
焦ってもいいことは一つもありません。まずは、大きく深呼吸を3回しましょう。

落ち着きましたか?
それでは、次に取るべき行動を考えましょう。

この記事はWordPressのプロであるwp.makeが監修しています。
具体的なハッキングへの対策方法も掲載しているので、きっとあなたのサイトの復旧に役立つはずです。

目次

本当にハッキングされているかをチェック

まず、重要なのは現状を正確に確認することです。本当にハッキングを受けたのか。サーバーエラーやプラグインを更新した際の不具合の可能性もあります。どんな症状が出ていて、どこに問題があるのかを特定し、本当にハッキングなのか、それとも他の原因なのかを特定しましょう。

WordPressがハッキングされた場合、いくつかの兆候が見られます。
特に次に上げる項目に当てはまれば、ハッキングを受けている可能性が非常に高いです。

Googleから通知が来る

以下のようなメッセージがGoogle Search Consoleから届くことがあります。
この場合、Googleで明らかに異常を検知している場合です。

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

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

手動対策は裏付けを取ってから行われるため、ある程度長期に渡ってハッキングされた状態が続いていたことが予想されます。
この通知が来た時点で検索結果にあなたのサイトは表示されていません。すぐにサイト復旧のための行動を起こしましょう。

ヘッダー・フッターにスパム広告が挿入されている

アダルトコンテンツや違法ドラッグ等の不正なスパム広告が、サイトのヘッダーやフッターに挿入されている場合があります。
大量のサイトに一括で仕掛けられることが多く、特に見た目等を考えずに暗いテキストとして表示されることがあります。背景などに設定されていることも多く、肉眼では見えないこともありますが、検索エンジンからは確認できるためスパムサイトとして認定される恐れがあります。

検索結果画面の表示がおかしい

GoogleのURLバーに、「site:(ドメイン名)」と入力して検索してみましょう。こうするとGoogleがインデックスしているそのドメインのページを検索結果に表示させることができます。
その検索結果画面の記事タイトルやディスクリプションが、あなたが設定した覚えがないものに変わっている場合、ハッキングによって悪意のあるコードが埋め込まれています。

ユーザーから報告が来る

ハッカーは、一般的に出来るだけ長く対象のサイトをハッキング状態にしておきたいと考えるものです。そのため、管理権限を持つユーザーかどうかを判別して、そのユーザーには正常にサイトを表示させ、検索結果から来た一般ユーザーには悪意のあるWebサイトやスパムサイトにリダイレクトさせることがあります。
この場合、実際に別のサイトに飛ばされたユーザーから、サイトの異常についての報告が送られて来る場合があります。報告を受けたら、一度WordPressの管理画面をログアウトしたり、シークレットウィンドウで検索結果画面からサイトにアクセスしてみましょう。

サーバー会社などからメールが来る

レンタルサーバー会社などから、あなたが管理するWebサイトで何らかの悪質な行為やスパム行為が確認されたというメールが届くことがあります。迷惑メールを送っている、違法コンテンツを掲載しているなどの連絡があった場合、ハッカーがそれらの行為をあなたに気づかれずに行っている可能性があります。

関連リンク

まずはサイトとデータベースのバックアップを取る

ハッキングであることを特定できたなら、すぐにサイトをバックアップします。
FTP、レンタルサーバーのバックアップツール、バックアッププラグインなどを使用して、サイト全体をバックアップしてください。

バックアップの目的は、サイト全体を削除するためです。

「何を言ってるんだ、お前は!復旧するんじゃなかったのか!?」という声が聞こえて来そうですが、これはハッキングを受けた場合の一般的な処置です。ハッキングされたファイルをそのままにしておくと、現在は正常なファイルまでがマルウェアに感染してしまう恐れがあります。
また、定期的にバックアップを取っているという場合でも、感染時のファイルがあれば正常時との差分を確認し、原因を特定するのに役立ちますのでバックアップは取っておきましょう。

また、データベースのバックアップも同様に取っておきましょう。
とりあえず、バックアップさえ取れていれば、基本的に全てが失われることはありません。

関連リンク

バックアップを取ったら、次にサイト内の汚染箇所の特定とクリーニングに入ります。
ただ、クリーニング前に知っておいていただきたい基本的な事項を解説しておきます。WordPressの仕組みや構造をよく理解している方は読み飛ばしていただいても問題ありません。

復旧作業前に知っておきたいWordPressの基礎知識

ハッキングされたサイトをクリーニングする時に知っておくべきことをまとめました。
WordPressの仕組みや構造をよく知らないという人は、復旧作業に入る前に確認しておきましょう。

プラグインのファイルを削除してもデータはなくならない

基本的に、プラグインが格納されている『wp-content / plugins / 』以下のディレクトリ内のファイルは削除しても大丈夫です。プラグインの設定等はファイルではなくデータベースに保存されており、ファイルを削除して再インストールすれば、クリーニングされた綺麗なファイルでプラグインを実行できます。ただし、プラグインを削除して再インストール・有効化するまでは、当然ですがそのプラグインの機能は使えません。サイトの表示・機能に影響がある可能性もあるので気をつけてください。

その他の注意点としては、プラグインファイルを削除するときは、そのプラグインに関連するディレクトリ全体を削除するということ。例を挙げると、Contact Form 7のプラグインを使用する場合は、『wp-content / plugins / contact-form-7』のディレクトリごと配下の全てのファイルを削除してください。一部のみ削除したり、残したりするとうまく動作しなくなる可能性があります。

使用中のテーマは基本的にひとつだけ。他は削除しても影響はない

WordPressでは、それぞれのテーマは『wp-content / themes / 』以下のディレクトリに保存されています。「twentyfifteen」「twentysixteen」「twentyseventeen」などのデフォルトテーマのフォルダが確認できるでしょう。(デフォルトテーマはWordPressのバージョンによって変わります)

WordPressにインストールされているテーマはこのディレクトリで管理されており、その中でサイトで使用されているのは、基本的には管理画面で選択中のテーマだけです。他のテーマは全て削除してしまってもサイトに影響は出ません。

ただし、何らかの条件にしたがってテーマを切り替える特殊なサイト構成の場合は複数のテーマを使用している可能性もあります。また、子テーマを使用している場合は親テーマは削除すると機能しなくなりますので注意してください。

「wp-admin」「wp-includes」に新しいファイルがあれば要注意

「wp-admin」「wp-includes」のディレクトリには、運用開始後にファイルが追加されることはほぼありません。自分のWordPressのバージョンと同じバージョンをWebサイトからダウンロードしてファイル構成を比較してみましょう。もし、新しいファイルが見つかれば、悪意のあるファイルである可能性が高くなります。

古いWordPressのバックアップを残していないか?

「WordPressを常に最新バージョンに保ち、セキュリティプラグインもインストールしていたのにハッキングされた」という例もあります。

ひとつの可能性としては、アップデートの際に古いサイト情報の全てをバックアップとしてサブディレクトリに保存していることが考えられます。開発者などがよく使う手法で「old/(ファイル名)_20181107(日付)」のような形でバックアップをとることがあります。ただ、この方法はディレクトリパスさえ判明すれば、Web上からアクセスできてしまいますので、古いサイトに侵入されてバックドアを仕込まれ、メインサイトにアクセスされてしまうということがあります。

もし、このバックアップ手法に心当たりがあって、ハッキング被害にあった場合は、これらのファイルを確認してみましょう。マルウェアが山のように見つかる場合も少なくありません。

有害なコード発見に有用なコマンド

プログラミングに関する多少の知識があり、サーバーへのSSHアクセス権があるなら、サインインして次のコマンドを実行してみましょう。ハッカーによって仕掛けられた悪意のあるコードや覚えのないファイルの変更履歴等を発見することができます。

(『.』は現在のディレクトリを示しています。現在のディレクトリがSSHにあるかを調べるには、’pwd’と入力してください)

‘find’で指定した期間内に変更された全てのファイルを表示する

次のコマンドで現在のディレクトリおよびサブディレクトリで、指定した期間内に変更されたファイルを検索することができます。

  • 過去2日間に変更された現在のディレクトリ内の全てのファイルを表示する
  • 過去10日間に変更された特定のディレクトリ内の全てのファイルを表示する

このコマンドで更新した覚えのない日にファイルが更新されていたり、変更した覚えのないファイルが表示された場合、ハッカーによって悪意ある変更が加えられたファイルである可能性が高いです。徐々に範囲を過去に広げていくことで、いつからハッキングが開始されたのかということも特定することができます。
これは感染ファイルを特定するための最も効果的で簡単な方法で、専門家も不正な改ざんをチェックする際に一般的に使用しています。

‘grep’でbase64文字列を含むファイル検索する

多くのハッカーはbase64(すべてのデータを英数字と記号の64進数で表す)を使用します。
base64を含むファイルを検索するためには、’grep’コマンドを使用します。
(ただし、正常なファイルでもbase64を使用しているファイルがあるため、中身を確認してからコードやファイルの削除を行いましょう)

  • 『base64』を含むファイルを検索して表示
  • 『base64』文字列が現れるファイルの実際の内容を見る(lオプションなし)
  • 『base64_decode』の文字列を含み、『.php』で終了するファイルを検索し、文字列が出現する行番号を出力する

共通して使用されている文字列を検索し削除する

ハッキングでは、スパムサイトやフィッシングサイトへの誘導や不正なスパム広告の埋め込み等、特定の目的を持って行われます。そのため、不正な改ざんが複数のファイルに渡って行われていても、共通の文字列が使用されている場合がほとんどです。

そこで、上記の’find’を使って最近更新されたファイルを検索し、悪意のあるコードに共通して含まれる特有の文字列(スパムサイトのURLや特定のJavascriptなど)を探します。それらを見つけたら、今度は’grep’を使って共通して使用されている文字列が含まれるファイルを特定し、それらのコードを削除しましょう。

  • 共通して使用されている文字列を検索して表示

『uploads』ディレクトリ内の画像以外のファイルを検索する

悪意のあるコードやファイルが多く見つかる場所の一つが『uploads』ディレクトリです。
『uploads』ディレクトリには、通常、記事投稿などに使用した画像ファイルが保存される場所です。その『uploads』ディレクトリの中から画像以外のファイルを検索するのが以下のコードになります。

  • 『uploads』ディレクトリ内の画像以外のファイルを検索する

上記のコードでは、検索結果を「uploads-non-image.log」というログファイル形式で、現在のディレクトリ内に保存します。

自分では対処が難しい場合

上記の手順がわからない、または、見つかったコードが有害なものかがわからないという場合は、専門家に相談しましょう。
『wp.rescue』に連絡すれば、WordPressの専門家が早急に対応します。

もし、誤った手順で対処を進めてしまうと、後になって専門家に相談しても復旧が困難になるケースもあるため、自分がどんな作業をしているかが把握できない場合は無闇に触らず、費用はかかるものの専門家に任せた方が良いケースもあります。

データベースからマルウェアを削除する

あなたのWordPressのデータベースからマルウェアを削除するためには、データベース管理パネルを使用して、データベースに接続して以下の手順で操作を行います。

  1. 変更前にデータベースのバックアップを作成
  2. 不審なコンテンツを検索
  3. 疑わしいコンテンツを含むテーブルを開く
  4. 不審なコンテンツを削除
  5. 変更後にサイトが正常に動作するかをテスト

『Search-Replace-DB』や『Adminer』といったデータベースアクセスツールを使うことも可能です。
ただし、これらのツールを残しておくとハッカーに悪用されてDBを不正に書き換えられる可能性もあるため、使用が終わればサーバーから消し忘れないように注意しましょう。

不審なユーザーアカウントを削除する

管理画面のユーザー画面から見慣れないWordPressユーザーが追加されている場合、ハッカーのアカウントの可能性があります。こうした怪しげなアカウントは以下の手順で削除しましょう。

  1. サイトとデータベースをバックアップ(ここまでに取っている場合は不要)
  2. WordPressに管理者アカウントでログインし、左メニューから「ユーザー」をクリック
  3. 疑わしいユーザーアカウントにカーソルを合わせ、「削除」ボタンをクリック

不審なアカウント自体はないものの、既存のユーザーアカウントのいずれかの利用が疑われる場合、パスワードを変更することができます。
また、安全管理として、管理者以外のユーザーの役割は必要最低限(投稿者、編集者、寄稿者など)にしておきましょう。

WordPressサイトの不審なコードの削除が完了したら

上記の操作で改ざんされたファイルの特定と不審なコードが見つかれば、削除してサイトの動作を確認しましょう。
ただし、ハッカーは複数の種類のコードを埋め込んでいる可能性もあるため、ひとつ対処したからと安心せず、他にも怪しいコードがないかしっかりと確認しましょう。ハッカーは再侵入するためのバックドアを仕掛けるため、ひとつでも見落としがあると再びハッキングされる可能性があります。

セキュリティの基本を再チェック

WordPressとプラグインの最新バージョンへのアップデートや、サイト上の全てのパスワード(特に管理者ユーザーのパスワード)を複雑なものに変更しましょう。
こちらのスキャンツールにURLを入力すれば、簡単にマルウェアの有無やブラックリストに載っているかどうかといった項目をチェックすることができます。

また、定期的な自動バックアップの設定やセキュリティ対策プラグインを入れていない場合は、この機会にプラグインをインストールしておきましょう。


マルウェアの警告が届く場合

Googleのセーフブラウジングリストや、McAfee、Yandexといったウイルス対策システムのブラックリストに登録されている場合、それらを解除してもらう必要があります。

Googleのセーフブラウジングリストからの削除を依頼する

以下のURLにアクセスして、URL入力欄に自分のサイトのURLを入力して実行します。

https://transparencyreport.google.com/safe-browsing/search

サイトの現在のステータスやGoogleのブラックリストに掲載された理由、次に行うべき行動が表示されます。

ウイルス対策システム会社のブラックリストからの削除を依頼する

それぞれのウイルス対策メーカーのWebサイトにアクセスし、危険なサイトの一覧から削除する方法という内容を見つけます。「ホワイトリスト」「サイト削除」などのキーワードでサイト内検索すると削除方法が見つかることが多いです。

WordPressサイトの再ハッキングを防止する

お疲れ様でした。
ここまでの作業をきっちりこなせば、あなたのサイトはハッキング状態から抜け出すことができたはずです。

しかし、元の状態に戻っただけでは、再度ハッキングされる恐れがあります。
最後に以下の項目を確認して、WordPressサイトを守りましょう。

  • Wordfence等のプラグインをインストールし、WordPressサイトを定期的にスキャンする
  • WordPress本体を最新にバージョンアップする
  • 全てのプラグイン、テーマを最新にバージョンアップする
  • パスワードを強力なものに変更する(半角10文字以上で英数字両方を使用し、特殊記号も含める)
  • 必要であれば、WordPress保守サービスを利用する

いずれもセキュリティに関する基本事項です。
最後の項目のWordPress保守サービスは、WordPressやプラグインのバージョンアップをスムーズに行い、死活監視や定期的なバックアップなどのセキュリティ対策を行ってくれるサービスです。また、万が一、ハッキング被害に遭ってしまった場合も、早急な復旧も行います。

安全なWordPressサイトの運営をしたい、セキュリティ対策にリソースを割きたくない、という場合は検討の余地があるでしょう。

WordPressサイトのトラブル復旧なら「wp.rescue」にお任せ!

WordPressサイトで急なトラブルにあったら、「wp.rescue」にご相談ください!

  • 急にサイトに何も表示されなくなった…
  • ログインできなくなった…
  • 覚えのない不審なページがインデックスされている…
  • 不審なユーザーが追加されている…
  • リンクが不審なサイトに飛ぶように書き換えられている…
  • バージョンアップしたらサイトが崩れてしまった…

「wp.rescue」は、WordPressのプロフェッショナル集団によるWordPressトラブル・ハッキング復旧サービスです。
WordPressサイト運営していて、急なトラブルに遭うことは珍しくありません。

原因や解決法方がわかる場合は問題ありませんが、原因がわからなかったり、ハッキングの可能性がある場合はプロに相談するのが一番です。
wp.rescueでは、様々なサイトのトラブルやハッキング被害を解決してきた経験・ノウハウがあるため、速やかなサイトの復旧が可能です。

トラブル復旧はスピードも重要。wp.rescueなら最短即日での復旧も可能ですので、お困りの場合はまずはお問い合わせフォームから無料相談をしてください。

>> wp.rescueに無料相談する

「あれ? 何かおかしい…」と思ったら、WordPressハッキング・緊急対応サービス『wp.rescue』

wp.rescue

特に心当たりもないのに、
・WordPressにログインできない…
・検索結果の表示がおかしい…
・勝手にリダイレクトされてしまう…


など、「何か変だ」と感じたら、
実はWordPressがハッキングされている可能性もあります。

被害が拡大・深刻化する前に、『wp.rescue』にご相談ください!

WordPressのプロフェッショナルがあなたのサイトの問題を迅速解決!