こんにちは。篠原です。
とある方からお電話があり、自身のホームページを表示すると常に403エラーになってしまうとのことで、調査依頼を受けました。
確かに、どの画面にアクセスしても、403エラーが返却されている。
相手方の許可を得てサーバー内のファイルを覗いてみたけれども、
.htaccessファイルの設定内容やパーミッションにおかしなところはない。
そこで、直近のアクセスログを見てみると…
[25/Apr/2020:01:00:23 +0900] "GET /wp-login.php HTTP/1.1" 200 2078 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" (略) [25/Apr/2020:01:00:32 +0900] "POST /wp-login.php HTTP/1.1" 302 5 "http://example.com/wp-login.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:34 +0900] "GET /wp-admin/ HTTP/1.1" 200 20333 "http://example.com/wp-login.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" (略) [25/Apr/2020:01:00:39 +0900] "GET /wp-admin/plugin-install.php HTTP/1.1" 200 18883 "http://example.com/wp-admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" (略) [25/Apr/2020:01:00:48 +0900] "POST /wp-admin/update.php?action=upload-plugin HTTP/1.1" 200 7644 "http://example.com/wp-admin/plugin-install.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:48 +0900] "GET /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=hoverIntent,common,hoverintent-js,admin-bar,svg-painter,thickbox,underscore,shortcode,media-upload,jquery-ui-core,jquery-ui-widg&load%5Bchunk_1%5D=et,jquery-ui-tabs&ver=5.3.2 HTTP/1.1" 200 30973 "http://example.com/wp-admin/update.php?action=upload-plugin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:48 +0900] "GET /wp-admin/load-styles.php?c=0&dir=ltr&load%5Bchunk_0%5D=dashicons,admin-bar,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,wp-pointer,widgets&load%5Bchunk_1%5D=,site-icon,l10n,buttons&ver=5.3.2 HTTP/1.1" 200 107067 "http://example.com/wp-admin/update.php?action=upload-plugin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:51 +0900] "GET /wp-admin/plugins.php?action=activate&plugin=ubh%2Fubh.php&_wpnonce=dba7653ff9 HTTP/1.1" 302 5 "http://example.com/wp-admin/update.php?action=upload-plugin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:52 +0900] "GET /wp-admin/plugins.php?activate=true&plugin_status=all&paged=1&s= HTTP/1.1" 200 15956 "http://example.com/wp-admin/update.php?action=upload-plugin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:52 +0900] "GET /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=hoverIntent,common,hoverintent-js,admin-bar,underscore,wp-util&ver=5.3.2 HTTP/1.1" 200 15094 "http://example.com/wp-admin/plugins.php?plugin_status=all&paged=1&s" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:52 +0900] "GET /wp-includes/js/jquery/ui/core.min.js?ver=1.11.4 HTTP/1.1" 200 1918 "http://example.com/wp-admin/plugins.php?plugin_status=all&paged=1&s" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:55 +0900] "GET /wp-admin/admin.php?page=uploader HTTP/1.1" 200 8364 "http://example.com/wp-admin/plugins.php?plugin_status=all&paged=1&s" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:55 +0900] "GET /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=hoverIntent,common,hoverintent-js,admin-bar,svg-painter&ver=5.3.2 HTTP/1.1" 200 10444 "http://example.com/wp-admin/admin.php?page=uploader" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:55 +0900] "GET /wp-content/plugins/ubh/up.php HTTP/1.1" 200 251 "http://example.com/wp-admin/admin.php?page=uploader" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36" [25/Apr/2020:01:00:59 +0900] "POST /wp-content/plugins/ubh/up.php HTTP/1.1" 200 372 "http://example.com/wp-content/plugins/ubh/up.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"
何が起きているか、わかりますでしょうか。
※一部ログ情報を削り、リファラーURLを「example.com」に伏せてあります
このログが示す事実は、
何者かがWordPressで作られたサイトの管理画面へのログインに成功し、
プラグインの追加画面から不審なスクリプトをアップロードした
ということです。
そのファイルはWordPressプラグインを偽装した、いわゆる「トロイの木馬」であり、
一度アップロードを許した取引先のサイトは、
その後多数のバックドアを仕込まれ、内容が改ざんされていました。
数日後、改ざんされたサイトから大量のスパムメールが送られたことをサーバーの運営会社が検知し、
意図的にすべての通信を403エラーとすることで、攻撃を含むあらゆるWebアクセスを遮断した、というのが今回の事象でした。
実はこのアクセスログに至る前に、このサイトでは管理画面に対するいくつものブルートフォース攻撃を受けていました。
後から聞いたところ、管理者のユーザー名/パスワードは、どちらもドメイン名から容易に想像できるものが設定されていました。
それでは、簡単なブルートフォース攻撃だけでも、パスワードがクラッキングされてしまう可能性を否定できません。
今回のサイバー攻撃は、解読が容易なパスワードを設定したことが直接の原因であると結論付けました。
今回の件で、Webサイトは常に攻撃を受けていることを私自身も強く認識しました。
一度パスワードがクラッキングされ、管理画面にログインされてしまえば、あとは攻撃者のやりたい放題です。
いつサイバー攻撃の被害者に、そして身に覚えのない加害者になるか、わかりません。
改めて、パスワードとしては
ことが大切です。
皆さんも管理には十分気を付けてください。