Wordpressの【SEOポイズニング+フィッシング被害】から復旧した話
フリーランスのWeb制作者、i-nob(@inobapen)です。
タイトルの通りですが、サーバーに置いてある全てのWordpressページがフィッシングサイトの表示スクリプトを埋め込まれている状況を打破するべく奮闘し、どうにか収束させることに成功したというお話です。
対応するにあたって行った様々な調査で「被害に遭わないためにどうするか」という予防の話はたくさん出てきたのですが、「どのような攻撃でどう復旧対応をしたか」という話はかなり少ない印象だったので、記事にしてみようと思いました。
1:原因の推測
2020年の8月末~9月初めにかけて、Wordpressでよく使われているファイルマネージャープラグイン「File Manager」の脆弱性が発生したタイミングで、Wordpressへ攻撃者が不正侵入したログが残っていました。
対応したサーバーのWebページの幾つかがそのプラグインを使用しており、プラグイン脆弱性を利用した攻撃者の侵入・攻撃がこの問題の発端の原因だと推測します。
2:どのような攻撃をされたか
主に下記のような攻撃をされました。
●不審な管理者アカウントの生成
●Webページリンクをクリックしてもアクセスできない(400番台のエラーページに飛ばされる)
●検索結果から来たCookieを持たない閲覧者に限定し、トップページでクリックすると別タブでフィッシングサイトが開くようにされた(SEOポイズニング+フィッシング)
●遠隔でファイルを設置される(xmlrpc.phpの悪用)
3:SEOポイズニングとは?
比較的昔からある攻撃手法で、検索エンジンの上位に不正なページを表示させて、訪問した人をフィッシングサイトへ誘導したり、マルウェアに感染させたりするというものです。
この攻撃で厄介だと感じた部分は以下の通りです。
●検索結果で初めて訪問したケースでスクリプトを仕込むため、攻撃の発見が遅れやすい
●Webページのユーザーからの信頼性が下がる(初回訪問者からは特に)
本当に嫌な攻撃です…
4:xmlrpc.phpとは?
Wordpress以外のプログラムやサイト外からWordpressをコントロールするための様々な機能を提供しているもので、外部からの記事投稿などを可能にしますが、ファイルのアップロードなども可能にできるなど、セキュリティの面から有効にしておくのは危険なファイルでもあります。
過去のWordpressのセキュリティに関した被害も、このファイルへの攻撃が起点となっていたことが多いという情報が多数見受けられました。
5:攻撃の具体的な話
前述の「どのような攻撃をされたか」の要素が連携し、最終的には
/wp-content/plugins/
上記のプラグインフォルダに「いかにもありそうな架空プラグイン名」のフォルダと攻撃用のphpファイルが生成→消してもまた別のものがアップロードされる(xmlrpc.phpによるものと思われる)という事態になっていました。
6:どう解決したか
実際にやったことは以下のような作業です。
1:xmlrpc.phpの無効化
.htaccessに以下のような記述をして無効化しました。
以下はapacheでの書き方です。
<IfModule mod_rewrite.c>
RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
RewriteRule ^index\.php$ - [L]
</IfModule>
xmlrpc.phpへのアクセスがあれば、http://0.0.0.0/に飛ばしますよ、という内容ですね。
また、他にも下記のような書き方でも無効化できるとのことでした。
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
上記はxmlrpc.phpへのアクセスを拒否しますよ、という内容ですね。
2:不審な管理者アカウントの削除
これがあるとWordpressに直接侵入されるので、即削除しました。
3:不審な攻撃用ファイルの検索
今回役立ったのがWordpressのセキュリティプラグインで有名な「Wordfence Security」です。
ダッシュボードにある「Manage Scan」から、スキャンレベルをHigh Sensitivityにしてスキャンをしました。
しばらくするとpluginsの中に不審なphpがあるよーと結果を知らせてくれました。
Wordpressのプラグイン一覧と照合し、そこに存在しないなら攻撃用の偽プラグインだと判断できるのでスキャン結果に従ってフォルダごと削除しました。
…以上の対応で、SEOポイズニング+フィッシングの攻撃から復旧しました。
クライアントには、サーバーやDB、Wordpressなどのパスワードを変更するようお願いして収束させた、という流れでした。
余談ですが、ついでにWordpressの各種情報をヘッダーに表示させないようにする対応もfunctions.phpに書いて同時に行いました。
今回のまとめ
●Wordpressのプラグイン脆弱性情報に敏感であるのはセキュリティ上必須
●xmlrpc.phpのセキュリティ面での危険性は無視できない
●SEOポイズニングの手法を認識するようになった
こんなところでした。
xmlrpc.php以外にも、Wordpressの基本的なファイルで攻撃に利用されたものが過去にあるので、Wordpressでの制作を行う方は一通りどんな攻撃があったかを調べるのは役立つと思います。
こういった悪質な攻撃が全部無くなればどんなに平和か…そんなことを考えてしまう経験でした。