WordPressサイトが不正アクセスコード改ざんされたのでその対応方法

複数のWordPressサイトを運営しているのですが、2018年9月16日23時頃とうとう私のサイトにも不正アクセスコード改ざんの事件が発生してしまいました。その際の経緯や対応方法について記載します。

そもそもの流出経緯の予測

恐らく原因は、先月にレンタルサーバーで発生したと連絡のあった、ネームサーバーへのDDos攻撃による影響ではないかと思います。もしくは、WordPress管理画面かFTPサーバー経由からディレクトリにアクセスされてコード改ざんが行われたのではないかと思われます。と記載していましたが「この攻撃では不正コード改ざんは行われないのでは?」「古いプラグインが原因では?」とご指摘を受けました。どちらかはハッキリとはわかりませんが、こちらの可能性の方が高いそうです。

実際に行われてしまったコード改ざんの内容

記述された不正コード

今回行われたのは、不正コード改ざんとは記載していますが、実際には<head>タグが喜寿されているphpファイルの殆どに以下の<script>~</script>が記述されていました。このコードは、ビジターユーザーがサイトに訪問するとリダイレクトされて広告サイトに訪問してしまうという内容でした。

実際に記述されてしまった不正な<script>~</script>コード

コード改ざんされたファイル一覧

以下、不正な<script>~</script>コードが記述されたファイルの一例です。全て記述してやろうと思いましたが、多すぎて断念しました。。。

  • wp-login.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-links-opml.php:<head>の開始&終了タグ前に不正コードが2箇所
  • readme.html:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-admin/upgrade.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-admin/setup-config.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-admin/install.php:<head>の開始&終了タグ前に不正コードが4箇所
  • wp-admin/includes/template.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-admin/includes/file.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-admin/maint/repair.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-content/cache/autoptimize/index.html:<head>タグ後ろに不正コードが1箇所
  • wp-content/cache/autoptimize/js/index.html:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-content/cache/autoptimize/css/index.html:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-includes/ms-deprecated.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-includes/load.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-includes/theme.php:<head>タグ後ろに不正コードが1箇所
  • wp-includes/functions.wp-scripts.php:<head>の開始&終了タグ前に不正コードが2箇所
  • wp-includes/functions.php:<head>の開始&終了タグ前に不正コード①が4箇所
  • wp-includes/embed.php:<head>タグ後ろに不正コードが1箇所
  • 他にもいろいろあって全て書ききれませんでした。。。

コード改ざん後の復旧対応方法

ニックネーム、パスワード変更を変更する

これ以上被害を増やさないために、不正コードの修正を行う前にパスワードを変更しておきましょう。WordPressのデフォルト設定では、ログインIDとニックネームが同一になってしまうのでニックネームも変更しておきます。その際にブログ上の表示名もニックネームが表示されるようにしておきましょう。大事なので二度言いますね、ニックネーム・ブログ上の表示名・パスワードの変更の3点を変更しましょう。

パスワード変更画面

全プラグイン停止後、更新&再インストール

まずは安全のため、全プラグインを停止させます。その後、更新できるものは更新し最新版へ。更新できないものは一度アンインストールして再インストールしておきます。今回、私のサイトでは「Autoptimize」内のphpファイルにも不正コード改ざんが行われていましたので、インストール済のプラグインは更新もしくは再インストールをしておいた方がいいです。

WordPressの再インストール

実際に一つ一つ確認しながら不正コードを削除していくよりも、ダッシュボードから再インストールする方が確実且つ安全なので再インストールをお勧めします。

WordPressテーマの再インストール

テーマ内は不正コードだらけですので、もちろんWordPressテーマについてもアップデートもしくは、再インストールを行います。

Wordfence Security – Firewall & Malware Scanをインストール

Wordfence Security – Firewall & Malware Scan

WordPressプラグインの「Wordfence Security – Firewall & Malware Scan」は最もインストールされているトータルセキュリティプラグインです。

最も人気のあるWORSPRESSファイアウォール&セキュリティスキャナ
Wordfenceには、WordPressを保護するために構築されたエンドポイントファイアウォールとマルウェアスキャナが含まれています。当社の脅威防衛は、最新のファイアウォールルール、マルウェアシグネチャ、悪質なIPアドレスでWordfenceを武器にして、Webサイトを安全に保つ必要があります。Wordfenceは、一連の追加機能によって完成されたもので、WordPressの最も包括的なセキュリティソリューションです。(公式抜粋)

インストールはこちらから(WP公式)

WordPressダッシュボード>プラグイン新規追加 からも「Wordfence Security – Firewall & Malware Scan」を検索する事でインストール可能ですのでこちらからの方が早いと思います。

Wordfence Security – Firewall & Malware Scan

ダッシュボード画面

Wordfence Security – Firewall & Malware Scan

とりあえず、有効化しておくだけで、サイトを守ってくれますので、今は有効化するのみにしておきます。

投稿・固定ページ本文のチェック

投稿記事の本文・固定記事の本文にも不正コードが記述されている可能性が高いので、投稿記事の本文・固定記事の本文も確認しましょう。私の場合も投稿記事・固定記事本文にも以下の様な不正コードが記述されていました。

不正コード改ざんscript

投稿記事・固定ページ本文の不正コードを一括削除する

投稿記事・固定ページ本文の不正コードを一括削除するために、プラグインの新規追加から「Search Regex」を追加します。

Search Regex

プラグインを有効化し、設定画面へ移動後、Search patternに記述された不正コードを貼り付けてSearchを押します。すると記述されてしまった記事が表示されます。Searchを押しても何も起こらず画面が真っ白になった場合は、ブラウザで戻ってLimit to:を100(100件ずつ処理)にすると正常に表示されると思います。この段階では、まだ削除はされていません。

Search Regex

記事をざざっと確認後、削除しても問題無いようであれば、Replace & Save を押して一括削除しましょう。

これで一応、投稿記事・固定ページ本文の不正コードは削除できました。

PHP MyAdminならSearch Regexより簡単に一括削除できました※2018/9/20追記

Search Regexで投稿記事・固定ページ本文の不正コードを一括削除していっていたのですが、「PHP MyAdminでできるよね??」と思って色々調べた結果、なんとかできましたので追記します。参考にさせていただいたサイト様

まずは、PHP MyAdminに移動します。

PHPMyAdmin

不正コードが記述されたデータベース>テーブルを選択します。そこからSQL実行画面へ移動します。移動後、以下のSQL文を記述するのですが、仮にテーブル(wordpress_posts)内のフィールド(post_content)内の今回の不正コードを一括削除する場合は、以下のSQL文となります。

※上記の中(preタグ内)にあるバックスラッシュは\マークに置換してSQL文として貼り付けてください(preタグの不具合のためバックスラッシュになっています)。

上記を自サイト用にアレンジしたSQL文を貼り付けた後、「クエリをシュミレート」を押して正常に実行されるかを確認します。

問題無いようであれば「実行」を押せば、全投稿・固定ページ記事内の本文から不正コードが削除されまると思います!

PHPMyAdmin

修正後の確認は、chromeのシークレットモードがおすすめ

修正後、不正リダイレクトされないかの確認を行う際は、chromeのシークレットモードやEdgeのInPrivateウィンドウで確認することをお勧めします。サイトのクッキーやキャッシュが残っている場合に不正リダイレクトが発生しない可能性が有るため、この方法で確認することをお勧めします。

今回、とても大変でした。「自分のサイトは大丈夫!」と思っていたら、、、ってやつでした。アカウント管理は出来る限り厳重にやらねば…と思い知りました。皆さんもWordPressの不正ログインや不正コード改善にはお気をつけて!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする