【sample@email.tst】WordPressサイトで、問い合わせフォーム(Contact form 7)から大量のスパムメールが届いたら


公開日:

この半年ほどの間、特に増加しているのが問い合わせフォームから不審なメールが数千通届くというケースです。

まず、よく見られる特徴についてです。

問い合わせフォームは一般的に氏名や社名、また電話番号や住所、メールアドレスなどを入力する仕組みになっていると思いますが、

1.名前がncMUFCMUになっている。

2.電話番号が555-666-0606になっている。

3.住所が3137 Laguna Streetになっている。

4.メールアドレスがsample@email.tstになっている。

こうした特徴に一致する場合、Acunetix Web Vulnerability Scanner (Acunetix WVS) という脆弱性検査ツールを用いた攻撃が行われています。

正確に言うと、「Webサイトの脆弱性を探している」といった方が正確なのですが、事実上攻撃となり得るので便宜上ここでは攻撃と表現します。

Acunetix WVSは、Webサイトが持つ様々な脆弱性、例えばWordPressサイトであれば、コアやプラグインの脆弱性が修正されていない(アップデートされていない)ままならそうした脆弱性を見つけ出します。

同時に、攻撃の入り口となる様々なファイルを探しています。

実際のログから見てみましょう。

なお、ログで見るとおおよそ秒間15回程度のハイペースでこうしたアクセスを行っています。

バックアップされたデータベースファイルの探索

“GET /dump.sql.tar HTTP/1.1”

“GET /backup.sql.tar HTTP/1.1”

“GET /database.yml~ HTTP/1.1”

“GET /db.sql.tar HTTP/1.1”

“GET /database.sql.tar HTTP/1.1”

“GET /backup_ドメイン名.sql HTTP/1.1″、”GET /ドメイン名.sql HTTP/1.1″、”GET /ドメイン名-backup.sql HTTP/1.1″、”GET /ドメイン名-dump.sql HTTP/1.1”

Webサイトの移転や、日時のデータベースバックアップでsqlファイルをルート上に置きっぱなしにしているケースを時々見かけますが、このようにツールは様々なパターンでファイルを探索しています。

当然置きっぱなしにしていてアクセス権限があれば、取得されてしまうことになります。

phpMyAdmin、adminerなどDB接続ツールの探索

“GET /phpmyadmin/main.php HTTP/1.1”

“GET /phpMyAdmin/main.php HTTP/1.1”

“GET /pma/main.php HTTP/1.1” 

“GET /mysql/main.php HTTP/1.1”

“GET /web/database/manager HTTP/1.1”

“GET /db/main.php HTTP/1.1”

“GET /dbadmin/main.php HTTP/1.1”

“GET /mysqladmin/main.php HTTP/1.1”

“GET /phpmyadmin2/main.php HTTP/1.1”

“GET /admin/pma/main.php HTTP/1.1”

“GET /adminer.php HTTP/1.1”

“GET /ad.php HTTP/1.1”

“GET /adminer-4.2.5.php HTTP/1.1”

“GET /adminer-4.3.0-mysql.php HTTP/1.1” 

“GET /adminer-4.3.1.php HTTP/1.1”

“GET /adminer-4.3.1-en.php HTTP/1.1”

“GET /adminer-4.3.1-mysql-en.php HTTP/1.1”

“GET /adminer-4.3.1-mysql.php HTTP/1.1” 

“GET /adminer-4.4.0.php HTTP/1.1”

“GET /adminer-4.4.0-mysql-en.php HTTP/1.1”

“GET /adminer-4.5.0.php HTTP/1.1”

“GET /adminer-4.5.0-mysql-en.php HTTP/1.1”

“GET /adminer-4.6.0.php HTTP/1.1”

“GET /adminer-4.6.0-en.php HTTP/1.1”

“GET /adminer-4.6.0-mysql-en.php HTTP/1.1” 

“GET /adminer-4.6.0-mysql.php HTTP/1.1” 

“GET /adminer-4.6.1.php HTTP/1.1”

“GET /adminer-4.6.1-en.php HTTP/1.1”

“GET /adminer-4.6.1-mysql-en.php HTTP/1.1” 

“GET /adminer-4.6.1-mysql.php HTTP/1.1” 

“GET /adminer-4.6.2.php HTTP/1.1” 

“GET /adminer-4.6.2-en.php HTTP/1.1” 

“GET /adminer-4.6.2-mysql.php HTTP/1.1” 

実に様々なパターンでデータベース接続ツールを探索しているのが分かります。

バックドアの探索

“GET /r57shell.php HTTP/1.1”

“GET /c99shell.php HTTP/1.1”

“GET /shell.php HTTP/1.1”

“GET /wp-content/r57shell.php HTTP/1.1”

シェル(shell)と呼ばれる、いわゆるバックドアがないかを探しています。

wp-config.php

“GET //wp-config.bak HTTP/1.1”

“GET //wp-config.php.bak HTTP/1.1”

“GET //wp-config.php.bac HTTP/1.1”

“GET //wp-config.php_bak HTTP/1.1”

“GET //bak.wp-config.php HTTP/1.1”

“GET //wp-config.BAK HTTP/1.1”

“GET //wp-config.old HTTP/1.1”

データベース接続情報やSALTキーなどが書き込まれているwp-config.phpを直接閲覧することは難しいですが、上記のようにバックアップとして残置されたファイルを探しています。

その他、ユーザー情報や設定情報など各種の情報を探索しています。

プラグインの脆弱性をついた攻撃

“GET /wp-admin/admin-ajax.php?action=revslider_show_image&img=../wp-config.php HTTP/1.1”

revsliderという文字が見えますが、これは文字通りrevsliderというスライダープラグインの脆弱性(ローカルファイルインクルード、バージョン4.2未満)を利用したもので、wp-config.phpをダウンロードできてしまいます。

このように、すでに公開されている既知の脆弱性を試すアクションが見られます。

対処法

こうしたいわゆる偵察によって明るみに出た脆弱性はその後攻撃され被害を生み出す可能性があります。

このため、まずはアップデートされていないならコア・プラグイン等をアップデートする必要があります。

また、サーバー内にwp-config.phpやsqlファイルのバックアップやコピーなどを残していないか確認しましょう。

フォームを狙った脆弱性の検査によりたくさんのメールが届いてしまうというのがこのケースですが、これも停止させなければなりません。

機械的なアクションですから、reCAPTCHA で防御できます。

Contact form 7 + reCAPTCHA v3の設定方法

WordPressにログインし、左メニューの「お問い合わせ」「reCAPTCHA」「インテグレーションのセットアップ」をクリックします。

サイトキーシークレットキーを入力する必要があるので、https://www.google.com/recaptcha/admin/にアクセスし、右上の+ボタンを押し、「新しいサイトを登録する」の画面で必要事項を入力します。

reCAPTCHAタイプは v3を選択してください。

入力後送信ボタンを押すと、

サイトキーとシークレットキーが表示されます。

これをコピーして、WordPress内、最初に開いた「お問い合わせ」「reCAPTCHA」「インテグレーションのセットアップ」の画面にペーストし、変更を保存します。

これで設定は完了です。

Webサイトの右下に、

こうした表示が出ているはずです。

これで、問い合わせフォーム(Contact form 7)を利用してsample@email.tstから大量のスパムメールが届くことはもうありません。

関連記事



カテゴリ:
タグ:



関連記事