ご覧のページは 6 / 6 です。先頭ページはこちら。
Step6. xmlrpcからブルートフォースアタック。
RPC (Remote Procedure Call) はリモートでプログラムを動かす技術で、XML-RPCはインターフェースがXMLのもの。
プロシージャとサブルーチン
プロシージャ(procedure)は一般的に『手続き』と呼ばれる。プログラムをまとめて特定の機能をもっているもの。
サブルーチン(subroutine)もプログラムをまとめて特定の機能をもっているが、『特定の処理』の意味合いが強く、機能をもってなくても使われる。
"routine" は『決まりきった仕事。いつもの手順』なので、繰り返し使う、共通化されたプログラムという意味もある。
プロシージャ ≒ サブルーチン ではあるが、機能はプログラムを組み立てて作るので、プロシージャのほうが概念としては大きい。
(プロシージャはサブルーチンの集まりでもある。)
REST APIが出てくるまではよく使われたものですが今では古い技術。しかしWordPressでは下位互換のために機能を残しています。
古いと言っても廃れてるわけではない。WebのHTTP/HTTPS通信ではREST APIに取って代わられたが、サーバー間の処理では今でも使う。
明確にxmlrpcをサポートしないといけないかぎり無効化しましょう。無効化はWebサーバーの設定で行ったほうがいいです。
WordPressですると、WebサーバーからPHPへ処理を移譲するトラフィックが大きくなってシステム負荷が高まるのでよろしくありません。
(それでもいいならしてもいいが。)
0.452 - - XXX.XXX.XXX.XXX - - [17/Apr/2021:06:23:14 +0900] "POST //xmlrpc.php HTTP/1.1" 200 415 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4240.193 Safari/537.36" "-"
0.375 - - XXX.XXX.XXX.XXX - - [17/Apr/2021:06:23:14 +0900] "POST //xmlrpc.php HTTP/1.1" 200 415 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4240.193 Safari/537.36" "-"
・
・
・
0.329 - - XXX.XXX.XXX.XXX - - [17/Apr/2021:06:39:20 +0900] "POST //xmlrpc.php HTTP/1.1" 200 512 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4240.193 Safari/537.36" "-"
0.299 - - XXX.XXX.XXX.XXX - - [17/Apr/2021:06:39:21 +0900] "POST //xmlrpc.php HTTP/1.1" 200 512 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4240.193 Safari/537.36" "-"
xmlprcはWordPressでよく知られた脆弱性
xmlrpcはWordPressの脆弱性でよく知られたものです。古い技術は狙われやすいのが相場なのでWebではと言ったほうがいいかも。
ボクの場合、このxmlrpcでブルートフォースアタックを喰らいました。
ブルートフォースアタック(総当り攻撃)
ユーザー名やパスワードなどを大量に作成し、サービスのログインを試みる攻撃。
不正ログインのための情報解析をかんたんにできる初歩的な手法。
初歩的な手法なので対応策もよく知られる。
- ログイン制限(3回失敗するとしばらくログインできない。解除が必要など)
- 2段階認証(安易な手法を使うぐらいなのであきらめも早い。)
『ユーザー名とパスワードが見えないんだけど?』と思うでしょうが、リクエストがPOSTです。ログにはそれは見えません。
見えませんが、15分間、パスワードを変えてログインを試みた(1200回の試行)ことは想像でき、失敗したようです。
(ログイン履歴にはなかったが、個人的には突破された可能性もあると思っている。今のところ被害は見つかってない。)
脆弱性を分かっててなぜ無効化してなかったか?
『脆弱性を知ってて放置してるのに講釈たれんな!』と言われそうですが、ボクの場合、Jetpackプラグインを使っているのであえて無効化はしてませんでした。
JetpackはWordPressのプラグインを開発している有名なプロジェクトで、CSSやJS、画像ファイルをCDN経由で配信したり、画像の遅延表示(lazy-loading)したりできる拡張パック。
SNSボタンを表示するのもあり、SNSアカウントの連携もかんたんにできる。また、記事の公開時にTwitter, Facebookに同時投稿する機能もある。
JetpackにはPVの集計機能があります。Google Analyticsより細かい集計はできませんが、シンプルにPV数だけを集計しているので大まかに確認するのに結構使える。
そのJetpackはxmlprcを使っています。無効化しなかったのは統計情報が取れないんじゃないかと思ったから。
今は統計に影響がないのが分かったので無効化しています。影響が出るのは、https://wordpress.comからWordPressの管理機能が使えないこと、また、自サイトとの連携が切断で表示されることくらい。
(WPサイトの管理画面のJetpackダッシュボードでは連携できてるので、完全に切れてるわけではないらしい。)
wordpress.comで管理作業を行うにはWordPressアカウントが必要。
WordPressサイトを一番最初に立ち上げたときに作ったようなないような...
Jetpackを最初にインストールしたときに作ったんじゃなかったかな?
WordPressの統計情報を集計するにはアカウントとサイトを連携させる。連携はサイト管理画面のJetpackのダッシュボードでできる。
WordPressアカウントにはSNSの機能もあり、新規投稿を公開するとフォロワーに通知することもできる。
- P1 不正アクセスを試されたログ
- P2 Step2. ブログ編集ツールの設定情報へのアクセス
- P3 Step3. WordPressのログインユーザー名を取ろうとする。
- P4 Step4. REST APIからユーザー情報を取ろうとする。
- P5 Step5. oEmbedから情報を取ろうとする。
- P6 Step6. xmlrpcからブルートフォースアタック。