過去に一度スパム攻撃されたWordPressの、プラグインがアップデート・削除不可能になっています。
- 評価
- クリップ 0
- VIEW 1,763
前提・実現したいこと
WordPressの「MW WP Form」のプラグインのアップデートをしたかったのですが、以下のエラーが表示されてしまいできませんでした。
そのWordPressのサイトは、一度「MW WP Form」で作成したお問い合わせフォームから大量のスパムが送られ、一部データを削除されるなどのハッキングを受けたものです(その時はサイトガードプラグインを入れたり、お問い合わせフォームにreCAPTCHAを入れたりして防ぎました)。他のプラグインはアップデートできています。「MW WP Form」だけがアップデートできません。
発生している問題・エラーメッセージ
MW WP Form の更新中にエラーが発生しました: いくつかのファイルをコピーできないため、最新版のインストールができません。これはたいていの場合、ファイルのパーミッションが適切でないことが原因です。 readme.txt, languages, languages/mw-wp-form-ja.po, languages/mw-wp-form-ja.mo, languages/mw-wp-form.pot, css, css/admin-list.css, css/admin-common.css, css/admin-data-list.css, css/style.css, css/admin-data.css, css/admin-repeatable.css, css/admin.css, classes, classes/validation-rules, classes/validation-rules/class.zip.php, classes/validation-rules/class.maximagesize.php, classes/validation-rules/class.numeric.php, classes/validation-rules/class.kana.php, classes/validation-rules/class.alpha.php, classes/validation-rules/class.filesize.php, classes/validation-rules/class.in.php, classes/validation-rules/class.mail.php, classes/validation-rules/class.between.php, classes/validation-rules/class.required.php, classes/validation-rules/class.noempty.php, classes/validation-rules/class.minimagesize.php, classes/validation-rules/class.eq.php, classes/validation-rules/class.alphanumeric.php, classes/validation-rules/class.url.php, classes/validation-rules/class.month.php, classes/validation-rules/class.akismet.php, classes/validation-rules/class.katakana.php, classes/validation-rules/class.hiragana.php, classes/validation-rules/class.filetype.php, classes/validation-rules/class.nofalse.php, classes/validation-rules/class.minlength.php, classes/validation-rules/class.tel.php, classes/validation-rules/class.date.php, classes/functions.php, classes/models, classes/models/class.contact-data.php, classes/models/class.mail.php, classes/models/class.abstract-form-field.php, classes/models/class.csv.php, classes/models/class.setting.php, classes/models/class.form.php, classes/models/class.akismet.php, classes/models/class.contact-data-setting.php, classes/models/class.validation.php, classes/models/class.session.php, classes/models/class.admin.php, classes/models/class.error.php, classes/models/class.json-parser.php, classes/models/class.file.php, classes/models/class.abstract-validation-rule.php, classes/models/class.data.php, classes/controllers, classes/controllers/class.controller.php, classes/controllers/class.contact-data.php, classes/controllers/class.admin-list.php, classes/controllers/class.main.php, classes/controllers/class.contact-data-list.php, classes/controllers/class.chart.php, classes/controllers/class.admin.php, classes/controllers/class.stores-inquiry-data-form-list.php, classes/services, classes/services/class.redirected.php, classes/services/class.mail.php, classes/services/class.exec-shortcode.php, classes/services/class.mail-parser.php, classes/form-fields, classes/form-fields/class.select.php, classes/form-fields/class.button-submit.php, classes/form-fields/class.zip.php, classes/form-fields/class.akismet_error.php, classes/form-fields/class.number.php, classes/form-fields/class.password.php, classes/form-fields/class.submit.php, classes/form-fields/class.button.php, classes/form-fields/class.email.php, classes/form-fields/class.datepicker.php, classes/form-fields/class.radio.php, classes/form-fields/class.button-button.php, classes/form-fields/class.submit-button.php, classes/form-fields/class.range.php, classes/form-fields/class.button-confirm.php, classes/form-fields/class.hidden.php, classes/form-fields/class.url.php, classes/form-fields/class.textarea.php, classes/form-fields/class.custom-mail-tag.php, classes/form-fields/class.text.php, classes/form-fields/class.button-back.php, classes/form-fields/class.image.php, classes/form-fields/class.checkbox.php, classes/form-fields/class.monthpicker.php, classes/form-fields/class.confirm-button.php, classes/form-fields/class.error.php, classes/form-fields/class.file.php, classes/form-fields/class.tel.php, classes/form-fields/class.back-button.php, classes/config.php, js, js/admin-data-list.js, js/mw-wp-form-google-chart.js, js/admin.js, js/jquery-ui-month-picker, js/jquery-ui-month-picker/MonthPicker.min.js, js/jquery-ui-month-picker/MonthPicker.min.css, js/scroll.js, js/admin-chart.js, js/mw-wp-form-repeatable.js, js/form.js, images, images/handle.png, templates, templates/contact-data-list, templates/contact-data-list/admin-print-styles.php, templates/contact-data-list/column.php, templates/contact-data-list/csv-button.php, templates/stores-inquiry-data-form-list, templates/stores-inquiry-data-form-list/index.php, templates/contact-data, templates/contact-data/admin-print-styles.php, templates/contact-data/detail.php, templates/contact-data/returning-link.php, templates/chart, templates/chart/index.php, templates/admin, templates/admin/add-ons.php, templates/admin/admin-mail-options.php, templates/admin/form-key.php, templates/admin/tag-generator.php, templates/admin/settings.php, templates/admin/validation-rule.php, templates/admin/url.php, templates/admin/mail-options.php, templates/admin/style.php, templates/admin-list, templates/admin-list/form-key.php, mw-wp-form.php
試したこと
- プラグインを管理画面のダッシュボードから該当プラグインを「削除」
→ 同様のエラー - FTPソフトから「mw-wp-form」を別名に変更
→ 同様のエラー - FTPソフトで「mw-wp-form」フォルダを削除
→ 何度やっても消えない - FTPソフトから「mw-wp-form」を別名に変更したあと、新しくmw wp formのプラグインを管理画面からDL
→ MW WP Fromがはいっている扱いのためDLはできない - FTPソフトから「mw-wp-form」を別名に変更した状態で、mw wp formプラグインをZIPファイルでDLして、管理画面からプラグインを新規追加でアップロードしてみる
→ 同じプラグインが2つはいっている扱いなのは変わらないため、WordPress側が混乱したのか「mw wp form」の設定画面に入れなくなる。 - FTPソフトで「パーミッション」と「所有者/グループ」を見ると他のプラグインと明らかに情報が違うことがわかり、管理者を変えようと試みる。
→ ターミナルからFTPにログインしようとするが、パスワードは合っているはずなのに「Connection closed」となりログインすら不可能。
※ターミナルから管理者権限をいじるのはやったことがなく、基本の「き」すらよく分かってません。
補足情報
使用OSはmac。
使用しているFTPソフトはFileZilla。
サーバーのPHPのバージョンは7.0.16。
サーバーはレンタル(詳細なプランは不明)、コントロールパネルはPlesk。
その他に必要な情報がございましたら追加します。
推測・考えられる解決法
おそらく、以前の攻撃で管理者権限を変更されてしまったためにプラグインのアップデート・削除ができなくなってしまったのだと推測しています。ですので、その管理者権限をなにかに変えれば解決できると考えていますが、以下の点で詰まっています。
- コマンドラインで変更する方法がよくわからない
sftp コマンドでFTPに接続して、プラグインのフォルダに対して何かしらのコマンドを打って変更すると思いますが、FTPに接続できないので困っています。コマンド以外で変更する方法はありますか? - 権限を何に変更すればいいのか分からない
「Apache」にすればいいんでしょうか?
削除もできないため、他のプラグインに乗り換える事もできません。セキュリティ面を考えると不安なので、できればなんとかしたいです。お手数をおかけいたしますが、ご教示いただけると幸いです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
MW WP Form の更新中にエラーが発生しました: いくつかのファイルをコピーできないため、最新版のインストールができません。これはたいていの場合、ファイルのパーミッションが適切でないことが原因です
確認したって記述がないけど、メッセージどおりじゃないの?
ちなみに、
一部データを削除されるなどのハッキングを受けたものです
このレベルの攻撃を受けたサイトは、「攻撃方法の特定」ができない場合、再公開してはいけません。
簡単に再度侵入を許すことになります。
きちんと対策できる方に相談し、一から作り直すのが適切です。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+3
まずはレンタルサーバーなのか何なのか、レンタルサーバーならどこのレンタルサーバーのどのプランなのか、その辺の情報が絶対必要です。
とりあえずDoS的な攻撃でしたら管理者権限を書き換えられるようなことはあまり考えなくて良いと思います。
いろいろやり方は考えられますが、3点提案してみます。
1.コントロールパネルから削除(レンタルサーバーの場合)
フォルダを消したり名前変更したいのであればまずはコントロールパネルにログインします。
ほとんどのレンタルサーバーでファイルマネージャー的な物があるので、そこから削除なり名前変更を行う。
ファイルマネージャーからも出来ないのであればレンタルサーバーのサポートに相談しましょう。
2.DBからプラグインを強制的に無効にする
https://happyquality.com/2014/07/07/2908.htm
この辺を参考に。
3.ワードプレス自体を再構築する
サイトにどれくらい手間がかかってるか、記事数がどれくらいか次第ですが、個人的にはあれこれ考えるくらいならこっちが簡単かな?と思います。
記事をエクスポートして、使用しているプラグインを控えて、画像・ファイルをバックアップして・・・
って感じで別のサブフォルダにWordpressをインストールし直して再構築していきます。
記事等が余程の件数があっても現状サイトの管理画面に入れるのであれば1時間はいらないのではないでしょうか?
細かいことがわかりませんがとりあえずの提案まで。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/07/24 10:40 編集
再構築の方向性で考えようと思います。
2018/07/24 11:07
で、問題のサイトの再開ですが、「一部データを削除されるなど」の被害がある場合、すでにシステム内のファイルに変更が加えられている可能性があるので、サーバ構築からやり直す必要があります。
*DB 内データの書き換えのみであれば、影響範囲は絞れる可能性がありますが、それでも保険的に一から作り直したほうが良いと思います。
再構築にあたっては、セキュリティに通じた方にアドバイスをもらい、セキュアな環境として公開することが必要となります。
侵入された攻撃手段を封じたとしても、すでに一度許している以上、標的としておいしい相手だと認識されている可能性が高いので、慎重なセキュリティ設計を行ったほうが良いです。
2018/07/24 11:51
その時確認できた攻撃は目に見えるもので、以下の3点でした。
・大量のスパムメールを送られる。
・投稿ページが一部削除されている。
・MW WP Form プラグインフォルダの権限がapacheに変えられている。
DBをイジられたかどうかは分かりませんが、可能性は0ではなさそうです。
作り直す場合「サーバー構築からやり直す」ということですが、このようなことでしょうか。
・サーバー内のWordPressに関するデータを全部削除
・もう一度WordPressを入れ直す(WordPressを入れるディレクトリ名は変える)
・過去のデータは記事、メディアとプラグインの情報をインポート+エクスポートする
・万が一を考え、データベースは以前のデータをプラグインを使ってそのまま移行はしない。
・サーバーを変える必要はない
サーバーやセキュリティ関連には詳しくなく、サーバをネットワークから切り離す方法すら分からないので、セキュリティやサーバー関連に詳しい人を探して相談しようと思います。
2018/07/24 11:59
・静的ページを別に作り、「メンテナンス中」として、DNS をそちらに向ける
・既存サイトの解析を専門家に依頼する
・新サイトを、新しいサーバで構築する
・DNSを新サイトに向ける
サーバ環境にすでに何か仕込まれている可能性があるので、新サーバを利用したほうが良いです。
また、既存環境は、調査の為初期化せず、そのまま専門家に見てもらってください。
併せてレンタルサーバの管理会社に連絡を入れておくと適切な対応をしてもらえると思います。
2018/07/24 12:31
その方向で社内に報告し、相談しようと思います。
サーバー変更はすぐには難しいかも知れませんが、検討する方向まではもっていけそうです。
2018/07/24 12:47
スクリプト1つ突っ込めれば、かなり危険なことまで可能なので、まず上長と相談してください。
他社(他者)に迷惑をかける可能性もあります。
具体的には
・他社サイトを攻撃
・貴社のドメインでスパムを出しまくる
等々、踏み台として使用されると非常に厄介です。
もっとも、今はマイニングがブームなので、上記は無いかもしれませんが、それでも早急にサーバは停止したほうが良いです。