WordPressがハッキングされた事例と実際の修復手順

セオリコでは、年間数百サイトの WordPress 修復を行っています。

そのなかに「ハッキングによる改ざん」も含まれており、同様に修復を行ってきました。個人ブログであってもアクセス数の少ないサイトであっても関係なく攻撃され、もし改ざんされてしまったら一刻も早い修復が必要です。

とは言っても、修復を外注するとそれなりにお金がかかります。複数サイトがやられてしまうと修復費用は数十万円に及びますから、自分で修復したいという方もいるでしょう。

そこで、ハッキングされたサイトの症状と修復手順を、実例をもとにご紹介します(クライアントの承諾を得て掲載しています)。

今すぐサイトの復旧が必要な場合は、以下のリンクよりご相談ください。担当者がオンラインであれば 30 分以内にご返信し、当日中に対応いたします。

修復費用:8,000 円 / 1 サイト

ハッキングされるとどうなるか

以下のような症状が表れた場合、確実にハッキング・改ざんされています。

  • 別のサイトにリダイレクト(自動転送)される
  • site: コマンドで検索すると見知らぬページが出てくる
  • ブラウザに「偽のサイトにアクセスしようとしています」などの警告が表示される
  • Search Console「セキュリティの問題」にレポートが表示される

その他、一般的な不具合か改ざんかわからない症状もあります。

  • 403 / 404 / 500 / 503 エラーが頻発する
  • WordPress 管理画面のデザインが崩れている
  • 知らないユーザーが管理者になっている
  • テーマやプラグインを更新できない
  • 体感できるレベルでページの表示が遅い
  • 検索しても正常なページが出てこない

いずれにしても、放置しておけば勝手に直るものではありません。

むしろ放置しておくとますます悪化してしまうので、何らかの異変に気づいたときはすぐ対処しましょう。

悪意をもった不正な侵入・書き換えは、正確には「クラッキング」と呼ばれています。「ハッキング」のほうがなじみがあると思いますので、本記事では「ハッキング」で統一しています。

ハッキングに気づいたときの対処法

ハッキングが確実な場合、管理者ができることは次の 3 つです。

  • サーバー内のサイトをすべて削除してやり直す
  • 自分で完全に修復する
  • 専門業者に依頼する

01. サーバー内のサイトをすべて削除してやり直す

もし、サイトを作り始めたばかりの状態で放置していたなら、いったんすべて削除してやり直すのが確実です。

サーバー内に複数のサイトがあるなら、高確率でそのすべてが改ざんされています。この場合、サーバー内の全サイトを修復しないと、またすぐにマルウェアが広がってしまいます。

サーバー内のサイトがすべて改ざんされている

どれか 1 つのサイトのみ修復しただけでは解決できません。とくに必要のないサイト(テストとして仮に作ったサイトなど)があるなら、この機会に完全な削除をおすすめします。

また、メールなどを保存する場所も改ざんされていることがほとんどなので、そちらもあわせてチェックしましょう。

どこにどのようなデータがあるかはサーバーによって異なります。

なお、ログインパスワードやデータベースのパスワードは高確率で漏洩しています。新たに作るさいは必ず変更してください。

同じパスワードを Google や SNS など他のサービスでも使っていた場合は、最優先で変更したほうがよいです。

02. 自分で修復する

WordPress やサーバーに詳しいなら、すべて削除しなくても自力で修復できます(本記事後半で実例をご紹介しています)。

ただし、改ざんパターンは複数あり、どのファイルがどのくらい書き換えられているかはケースバイケース。サーバーには削除してはいけないファイルもありますし、見落としがあるとすぐ再発してしまうので十分にご注意ください。

サーバーやプラグインのバックアップファイルがすでに感染している場合もあります。確実にクリーンな状態のファイルでなければ使用しないほうがよいです。

03. 専門業者に依頼する

最も確実な方法は、専門業者に修復を依頼することです。

数サイトであれば即日修復してくれる業者もいますので、自分ではどうしようもないと感じたらすぐ相談することをおすすめします。

修復費用はマチマチで、業者によって 1 サイトあたり 10,000 ~ 100,000 円とかなり幅があります。

費用に反映される部分

  • 個人か法人か
  • 作業に複数人が携わるか
  • 技術力や実績
  • 休日や夜間の緊急対応
  • 修復後の定期保守など付随サービス

技術力がそのまま価格に反映されているとはかぎらないため、口コミなどをよく見て慎重に選んだほうがよいでしょう。

WordPress 内のプラグインや画像が保存されている重要なディレクトリがすべて削除されている、というパターンも多くなってきました。

この場合、バックアップデータがなければ専門業者でも復旧できません。

時間が経過するほど悪化していきますので、異常に気がついたら即対応をおすすめします。

修復したサイトの実例

ここからは、実際に修復をご依頼いただいたサイトの実例をご紹介していきます。

表面上の問題

今回ご紹介するサイトは、トップページにアクセスしたさいに Cloudflare のキャプチャが表示されていました。

どうやら、外部のサイトにリダイレクトを試みているようです。

同様のパターンを何度か見てきましたので、同じような症状が出ていたらまずはハッキングを疑ったほうがよいかもしれません。

改ざんされたサイトのトップページ

ログイン画面にはアクセスできましたが、エラーコードが出ている上、ログインできない状態。

この症状だけではハッキングと断定できず、様々な原因が考えられます。

WordPressログイン画面に表示されているエラーコード

site: コマンドで検索すると、明らかに不正なページが複数出てきました。

こうなっていたらハッキングによる改ざんは確定です。放置しておいても勝手に直ることはなく、ひどいときは全データを削除されてしまいます。

FTPによる不正ファイルの確認

FTP で WordPress がインストールされているディレクトリ(ルート)を確認したところ、一目でわかる不正ファイルが複数設置されていました。

WordPressルートに設置されていた不正ファイル
追加された不正ファイル例
  • about.php
  • admin.php
  • content.php
  • header.php
  • radio.php
  • wp-confiq.php

いずれもハッキングされたサイトに仕込まれていることが多い、典型的なファイル名です。

改ざんされたファイル例
  • .htaccess
  • index.php
  • wp-blog-header.php
  • wp-cron.php

トロイの木馬などマルウェア本体である可能性があり、ダウンロードするさいは慎重に行ってください(そのまま削除推奨)。

どのファイルが不正か異常かは、正規ファイルと比較するとわかります。あとで修復に使用しますので、本体ファイルをダウンロードしておきましょう。

ダウンロード – WordPress.org 日本語

以下は実際に書き換えられていた wp-blog-header.php の一部です。22 行目以降は本来存在しないコードで、ハッキングにより追記されたものと思われます。

<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( ! isset( $wp_did_header ) ) {

$wp_did_header = true;

// Load the WordPress library.
require_once __DIR__ . '/wp-load.php';

// Set up the WordPress query.
wp();

// Load the theme template.
require_once ABSPATH . WPINC . '/template-loader.php';

}
ob_start();
?>
<?php $ucjek = 'ba'.'se64'.'_de'.'code'; $RzbTe = 'strr'.'ev'; $UHkaM = 'gzinflat'.'e'; ini_set('log_errors', 0); /**      e58bb5554cbc27f2edbb671bad3ec7a092eae617 ***/ error_reporting(0); eval($UHkaM($RzbTe...

また、admin.php の中身は「認証なしで使えるファイルマネージャー」でした。

ファイルの URL にアクセスすれば、だれでもサーバー内を好き勝手いじくり回せる、ということです。

WordPress にログインしなくてもいろいろできてしまうので、ログインセキュリティだけ強化しても意味がないことがわかりますね。

具体的な修復手順

修復のゴールは、「不正ファイルをすべて削除して元に戻す」ことです。

しかし、FTP でファイルを 1 つずつ確認していくのは現実的ではありません。マルウェアを開いて PC が感染するリスクもあります。

そこでおすすめなのは「必要なファイル以外はいったんすべて消してから最終チェックする」方法です。

01. /wp-content 以外を削除する

まずはルートにある .htaccess と wp-config.php をダウンロードしておきます。

.htaccessとwp-config.phpをダウンロード

もし現在の WordPress バージョンを覚えていない場合、wp-includes/version.php もダウンロードしておきましょう。

ファイル内にバージョンが記載されており、どのバージョンで復元すればよいかわかります。

wp-includes内にあるversion.phpをダウンロード

必要なファイルをダウンロードしたら /wp-content を残してすべて削除します。

wp-contentディレクトリ以外をすべて削除する

/error はサーバーで強制的に設置されるディレクトリです。

サーバーによっては他のディレクトリが標準設置されており、WordPress 外に必要なファイルを置いているケースもあります。

いずれも誤って削除しないようご注意ください。

02. /wp-content 内の修復

続いて /wp-content 内を修復していきます。

まずは /cache を含めたキャッシュ関連ファイルと不正ファイルを削除しておきます。

wp-content内の不要なファイル群を削除

もし .htaccess があったら、全ディレクトリに同じファイルが仕込まれている可能性大です。

サイトの状況により異なりますが、数千個の .htaccess が仕込まれていることも珍しくありません。

wp-content内にある.htaccess

全ディレクトリを目視で確認するのは大変なので、ファイル検索機能を使うのがおすすめです(ここでは FileZilla を使用しています)。

FileZilla リモートファイル検索機能
サーバー > リモートファイルの検索

あとは各ディレクトリをチェックして不正ファイルを削除していきます。

03. /wp-content/plugins 内の修復

/plugins には、プラグインが入っています。

プラグインを偽装したマルウェアが仕込まれていることが多く、とくに下図のような /Duplicatepost と /wp はとても多く見られる偽装ファイルです。

Duplicatepostとwpディレクトリ

この偽造ファイルは、管理画面のプラグイン一覧からは確認できません。

ここでどれが不正ファイルか見抜くのはとても難しいので、後述するセキュリティプラグインによるスキャンを併用してください。

04. /wp-content/themes 内の修復

/themes にはテーマファイルが入っています。

ここにもテーマを偽装したファイルが仕込まれている可能性があります。今まで確認したなかでとくに多いのは /twentytwenty に偽装した不正ファイルです。

中には /inc のみ入っており、そこに不正ファイルが入っています。

これも削除しておきましょう。

プラグインと同様、不正ファイルをすべて見つけるのは難しいので、後ほどスキャンして再チェックします。

05. /wp-content/uploads 内の修復

/uploads には、管理画面からアップロードした画像や、プラグインが設置したバックアップファイル等が入っています。

/2026 など数字のみのディレクトリには、年別にメディアが格納されています。

通常、その中に PHP ファイルが入ることはありません。

先ほどの .htaccess と同じくファイル検索で .php を探して、怪しいファイルがあれば削除しておきましょう。

ファイル名は完全にランダムですが、8dyxSGF.php のような意味のわからないファイル名になっているものは高確率で不正ファイルです。

パスワードの変更と復旧

不正ファイルをあらかた削除したあと、以下の手順で元に戻していきます。

  • データベースパスワードの変更
  • ログインパスワードの変更(ログイン後でも可)
  • WordPress コアファイルをアップロード

データベースパスワードを変更する

データベース情報は、最初にダウンロードしておいた wp-config.php に書かれています。

/** The name of the database for WordPress */
define( 'DB_NAME', 'seoryco_sample' );
/** Database username */
define( 'DB_USER', 'sample_user' );
/** Database password */
define( 'DB_PASSWORD', 'sdY%uzmc3f6p9pjM' );
データベース名seoryco_sample
データベースユーザー名sample_user
データベースパスワードsdY%uzmc3f6p9pjM
データベース情報例

サーバー管理画面(コントロールパネル)にログインし、データベースパスワードを変更しておきましょう。

以下は ConoHa WING のデータベース管理画面です。

複数サイトを運営している場合、別のデータベースのパスワードを変更しないようご注意ください。

パスワード変更後、wp-config.php の DB_PASSWORD も合わせて変更しておきます。

ログインパスワードを変更する

WordPress ログインパスワードはほぼ確実に漏洩しているので必ず変更してください。

データベース(phpMyAdmin)から変更する方法は、以下の記事で解説しています。

WordPress 6.8 のログインパスワードをデータベースから変更する方法

データベース操作に慣れていない場合、管理画面にログインしたあとプロフィール編集画面から変更しても大丈夫です(※ ログイン後、真っ先に変更してください)。

WordPress コアファイルをアップロードする

/wp-admin や /wp-includes を含め、最初の手順で削除したコアファイルをアップロードして元の状態に戻していきます。

最後に wp-config.php をアップロードすれば、WordPress 管理画面にログインできるようになっているはずです。

管理画面にログインできない場合、以下のパターンが考えられます。

  • データベースパスワードが間違っている
  • テーマやプラグインの主要ファイルが改ざんされている
  • index.php 等が自動的に書き換えられるタイプのマルウェアが仕込まれている

このあたりは対応方法がケースバイケースとなります。

管理画面に入ったあとの作業

WordPress 管理画面に入れたら、以下の作業を進めます。

  • ユーザー確認
  • パーマリンク設定リセット(.htaccess 復旧)
  • プラグイン更新 / 不要なプラグインの削除
  • テーマ更新 / 不要なテーマの削除

ユーザーを確認する

まずは[ユーザー]に入り、不正なユーザーが追加されていないか確認してください。

WordPressユーザー

先ほどログインパスワードを変更していなかった場合は、ここで変更しておきましょう。

強固なパスワードについて、以下の記事で解説しています。あわせてご覧ください。

自分のメールアドレスやパスワードが漏洩していないかチェックするツール3選

パーマリンク設定を更新する

次に、[設定]>[パーマリンク]に入り、何も変更せず「変更を保存」をクリックします。

パーマリンク設定

これで最初に削除した .htaccess が自動的に復旧します(同時に WordPress 内部がフラッシュされます)。

プラグインを確認する

[プラグイン]に入り、未更新のプラグインがあればすべて更新してください。

また、無効状態になっている停止中のプラグインはいったん削除をおすすめします。

WordPress への侵入は、ログイン画面からではなく、プラグインの穴を突いたものも多数あります。もし未更新のプラグインが複数あったとしたら、それが原因である可能性大です。

WordPress のセキュリティを強化する方法 10 選

テーマを確認する

[外観]>[テーマ]に入り、テーマが未更新であれば更新してください。

加えて、利用中のテーマ(+子テーマ)と WordPress 標準の Twenty 系テーマを 1 つ残し、その他はすべて削除しておきます。

使用していないテーマを削除する

プラグインと同じく、使わないものを残しておくとそれだけセキュリティ面で脆弱になるためです。

Wordfence インストールとスキャン

最後にセキュリティプラグインを導入し、スキャン機能を使って不正ファイルが残っていないか確認します。

セキュリティプラグインは多数ありますが、最もおすすめなのは「Wordfence」です。

実際に複数サイトで検証したところ、無料プラグインのなかでは最も検知率が高く、ふだんの運営においても不正アクセスを高確率でブロックしてくれます。

Wordfence インストール

[プラグイン]>[プラグインを追加]から Wordfence を検索してインストール・有効化します。

Wordfenceインストール

有効化後、ライセンス認証を求められます。

「Wordfence ライセンスを入手」をクリック。

Wordfence ライセンスを入手

Free 欄にある「Get a Free License」をクリック。

Wordfence フリーライセンス

ボタンの下にある「I’m OK waiting 30 days ~」のリンクをクリックします。

Wordfence フリーライセンスの確認

メールアドレスを入力し、Wordfence 規約やプライバシーポリシー同意のチェックを入れて「Register」をクリック。

Wordfence メールアドレス入力と規約同意

Wordfence から送られてくるメール内にある「Install My License Automatically」をクリックすると、自動的にライセンスキーが入力された状態で画面が開きます。

そのまま「ライセンスインストール」をクリックして登録完了です。

Wordfence ライセンスインストール

[Wordfence]>[スキャン]に進み、「スキャンオプションとスケジューリング」に入ります。

Wordfence スキャンオプション

ここで「高感度」に変更してから元の画面に戻り、「新しいスキャンを開始する」をクリック。

Wordfence スキャン設定を「高感度」に変更

不正ファイルが見つかると、具体的なファイル名が表示されます。

Wordfence スキャン結果

1 つずつ FTP で確認して削除してもよいですが、テーマやプラグインが対象になっていた場合は、丸ごとインストールし直したほうがよいです。

すべてのファイルを削除したら再度スキャンし、警告が出ない状態になれば完了です。

Wordfence はアンインストールしてもよいですが、日常の不正アクセスをブロックしてくれるのでそのままインストールしておくことをおすすめします。

Search Consoleでの対応方法

「セキュリティの問題」が表示されていた場合

もしサイトにアクセスしたさいに「偽のサイトにアクセスしようとしています」と警告が出ていたら、Search Console にもアラートが出ているはずです。

「偽のサイトにアクセスしようとしています」というフィッシング警告

Search Console を確認し、「セキュリティの問題」が出ていないか確認してください。

Search Console セキュリティの問題
「セキュリティの問題: 1 件の問題を検出しました」

「セキュリティの問題」ページを開くと、理由と URL の例が表示されます(すべての疑わしい URL が表示されるとはかぎりません)。

Search Console セキュリティの問題 詳細画面

すべての不審なファイルを取り除き、サイトが完全に復旧したら「審査をリクエスト」しましょう。

Search Console セキュリティの問題 審査リクエスト

例文:
サーバー内の全ファイルを調査し、ハッキングにより不正に改ざんされたファイルをすべて修正・削除しました。

問題がなければ、12 時間ほどで Google から審査完了のメールが届き、Chrome の警告も削除されます。

Search Console セキュリティの問題 審査完了メール

とくにアラートが出ていなかった場合

「セキュリティの問題」アラートが出ていなくても、検索結果に不正なページが多数出ていた場合は対応しておきましょう。

と言っても、やるべきことは「トップページの URL 検査&インデックス登録リクエスト」のみです。

ブログ記事が Google 検索のインデックスに登録されない原因と解決策

修復が完了していれば、不正なページはすべて削除された状態になっています。Google のクローラーがそれらのページを確認して 404 を検知すれば、次第に検索結果から削除されていきます。

不正ページ数にもよりますが、検索結果が完全に戻るまで数週間~数ヶ月かかります。

もしかするとサイト全体の検索評価が下がって順位も下落しているかもしれませんが、すぐに回復させる手段はありません。通常どおり運営を続け、評価が戻るまで待ってください。

セオリコの修復サービス(土日祝日対応可)

弊社でも WordPress 修復サービスをご用意しています。

WordPress修復サービス(ハッキング修復・セキュリティ強化) | セオリコ

やりとりや料金のお見積り・お支払いはココナラを使用しております。口コミも 400 件以上ありますので、ご利用者様の声もご参考にしていただければと思います。

WordPress ハッキングによる改ざん修復(ココナラ)

修復の流れは以下のとおりです。

STEP
サーバー内調査

サーバー内を調査し、ハッキングによる改ざんか確認いたします。また、被害状況を調べて正確なお見積りをご提出いたします。

調査は無料です。お見積りをもとに依頼をご検討ください。

STEP
修復作業

ご依頼いただいたのち、すぐ修復作業に入ります。

被害状況にもよりますが、早ければ 1 サイト 2 時間ほどで復旧可能です。

なお、WordPress 本体を総入れ替えする都合上、修復作業中は 30 分 ~ 1 時間ほどサイトの表示が停止します。画像や記事のデータは消えないのでご安心くださいませ。

STEP
セキュリティ強化

再び改ざんされないよう、以下の施策を行います。

  • パスワードを変更して強化
  • ログイン画面にキャプチャ設置
  • サイトの状況に合わせたセキュリティプラグインの選定・設置
  • 開発が終了しているプラグインのリスト化と代替案

※ 上記の施策をしても、完全に放置しておくと再び攻撃されてしまいます。定期的にログインして本体やプラグインをつねに最新版にしてください。

STEP
24 時間のサーバー監視

マルウェアやバックドアなどの不正ファイルが残っていると、数時間で再び改ざんされてしまいます。

サーバーを監視し、不正な攻撃や再発がないかをチェックします。

STEP
納品

サーバー監視中に問題がないことを確認の上で納品いたします。

万が一、納品後 2 週間以内に再発した場合は無償で修復いたします。

今回の事例紹介ではわかりやすいよう FTP 中心で載せましたが、実際の作業は SSH で行っています(SSH が使えないサーバーは FTP で対応)。

サーバーログやファイル変更履歴を細かく調査し、攻撃対象となった箇所も可能なかぎり特定してお伝えしています。

途中までご自身で修復を試した状態でも作業を引き継げますので、お困りのさいはお気軽にご相談ください。土日祝日や夜間の緊急対応も承っています。

お客様からよくいただく質問

WordPress 修復サービスをご利用いただいたお客様から多く寄せられた質問への回答を共有いたします。

ハッキングに気づいたらパスワードを変更すれば安全ですか?

「バックドア」と呼ばれる裏口を設置されていることがほとんどで、管理画面以外から自由に侵入できる状態になっている可能性があります。

不正なユーザーを管理者として登録されているケースもあるため、パスワード変更だけでは解決できません。

また、いったん設置された不正なファイル(マルウェア)は、自律的に動きます。それを完全に削除しないと危険なままです。

改ざん後にログイン URL を変更する、といった方法もまったく効果がありません。

不具合が起きているサイトだけ修復すれば大丈夫ですか?

同じサーバー内に複数のサイトがあるなら、そのすべてが改ざんされていると思ったほうがよいです。

仮に症状が出ていなくても、管理者が気づいていないだけかもしれません。全サイトのチェックと修復をおすすめします。

サーバーに問い合わせれば修復してもらえますか?

サイトの不具合への対応は、サイト管理者の責任です。

一般的な対応方法や不正なファイルについての情報は教えてくれるかもしれませんが、修復まではしてくれません。

個人情報流出の可能性はありますか?

WordPress に登録されている情報は漏洩している可能性が高く、メールアドレスやパスワードは流出したと見たほうがよいでしょう。

会員制サイトなどで顧客の個人情報などが登録されていたら、見られた・盗まれた可能性大です。

サーバー管理画面で登録した個人情報・クレジットカード情報まで漏洩している可能性はきわめて低いと思います。

WordPress ハッキングに関するまとめ

ハッキング被害にあってしまったら、基本的には「ファイルを総入れ替え」することになります。

画像ファイルと見せかけた不正ファイルや、修正してもすぐファイルを改ざんしてくる悪質なプログラムもありますから、まずは大元を探して対処してください。プラグインによる除去だけでは対応しきれないこともあります。

ハッキングされているかも、と思ったらお気軽にご相談ください。相談・事前調査のみであれば無料で承ります。

別のケースでご依頼いただいたお客様のリアルなレビューはこちら。

【リダイレクトハッキング】ココナラで復旧を依頼してみました|My Quality Of Life