ECサイトのクロスサイトスクリプティング脆弱性を悪用した攻撃
2021年4月28日に、Trend MicroからECサイトのクロスサイトスクリプティング(以下、XSS)脆弱性を悪用した攻撃(Water Pamola)が報告[1]されていますが、JPCERT/CCでも類似した攻撃を複数確認しています。JPCERT/CCで確認したインシデントでは、EC-CUBEを使用して構築されたECサイトにXSS脆弱性があったために、攻撃の被害にあっていました。なお、この攻撃は、EC-CUBE固有の脆弱性を狙ったものではなく、ECサイトの管理画面上にXSS脆弱性があった場合に影響があるため、EC-CUBEを使用していないECサイトでも攻撃の影響を受ける可能性があります。JPCERT/CCでは2021年7月1日時点においてもこれらの攻撃キャンペーンが継続して行われていることを確認しています。
今回は、JPCERT/CCが確認した本インシデントの詳細について解説します。
攻撃の概要
JPCERT/CCが確認した攻撃の流れを図1に示します。
また、今回の攻撃でECサイトへ設置されたファイルとその内容は表1のとおりです。
設置されたファイル | 内容 |
WebShell |
・多機能なWebShell(中国語をベースとしており、ツール名は不明) |
データベース操作ツール |
・Adminer version 4.2.4 |
情報窃取JavaScript |
・ボタンをクリックした際にクレジットカード情報などを送信する ・ログインページや決済ページでロードされる |
情報保存JavaScript |
・“情報窃取JavaScript”からの情報送信先 ・受信したデータを“情報保存ファイル”に保存する |
情報保存ファイル |
・クレジットカード番号、有効年月、セキュリティコード、メールアドレス、パスワードなどが保存されている |
簡素WebShell |
・アップロードされたPHPファイルを実行する |
攻撃者は、はじめに標的のECサイトの注文フォームに対し、不正なスクリプトを含んだ文字列を入力し、購入処理を行います(図1の①)。その結果、ECサイトの購入処理の部分にXSSの脆弱性が存在する場合、ECサイトの管理画面を閲覧した管理者は不正なスクリプトが実行され、クレデンシャル情報の窃取や、ECサイトへの簡素WebShellの設置などが行われます(図1の②~④)。その後、攻撃者によってECサイトにWebShellやユーザーの情報窃取を行うJavaScriptなどが設置されます。設置された“情報窃取JavaScript”によってECサイトを利用するユーザーのクレジットカード情報等を窃取され、“情報保存ファイル”としてECサイト内に保存されます(図1の⑤)。攻撃者は定期的なWebShellへのアクセスを行うことでこれらの情報を窃取していたと推測されます(図1の⑥)。
なお、攻撃者は、一連の攻撃の過程でECサイトにデータベース操作ツールのAdminer[2]を設置していました。Adminerはデータベースの中身をGUI環境で確認したい際に使用される正規のツールです。特徴として、一つのファイルでこれらの操作が可能である手軽さとMySQL、PostgreSQL、SQLite、MS SQL、Oracle、SimpleDB、Elasticsearch、MongoDBといったさまざまなデータベースに柔軟に対応できる点が挙げられます。攻撃者は、このツールを使用して、データベースの情報窃取も行っていたと推測されます。
XSS脆弱性を狙う不正な注文内容
攻撃者によるXSS攻撃は、図2のような不正なスクリプトを含んだ購入処理として行われます。攻撃者は複数の入力欄においてスクリプトの実行を狙うことで攻撃の成功確率を高めていることがわかります。
なお、XSS攻撃が成立した場合、管理者側PCで実行されるクレデンシャル情報の窃取を狙ったJavaScriptのコードは図3のとおりです。ユーザー名やパスワードの窃取を狙い、それらの情報を攻撃者が管理するサーバーへ送信するコードとなっています。
クレジットカード情報等の窃取
ECサイトを訪問したユーザーのクレジットカード情報等の窃取を狙った攻撃の流れを図4に示します。
設置された“情報窃取JavaScript”はユーザーによるログイン・決済時にそのクリック操作をフックすることで、クレジットカード情報等を窃取し、同じサーバーにある“情報保存JavaScript”へと送信されます。この“情報保存JavaScript”は受け取った情報について以下の相対パスに保存します。
../../../ProductOption/img/env.jpg
攻撃者はWebShellを介して、この“情報保存ファイル”へアクセスすることでユーザーのクレジットカード情報等を定期的に窃取していたものと推測されます。
具体的な“情報窃取JavaScript”のコードを図5に示します。
アクセスしたURLを確認し、ユーザーのマウスのクリック操作をフックすることで、情報が入力されている各要素のデータを窃取します。なお、収集対象のデータは、ECサイト事業者が使用しているクレジット決済サービスに係るパスの名前がハードコードされるなど、被害組織にあわせてカスタマイズされたコードになっています。
また、取得したクレジットカード情報等を送信するJavaScriptのコードを図6に示します。
このJavaScriptは、各情報を文字列としてつなぎ合わせ、“情報保存JavaScript”へ送信します。Email等の情報は、一時的に利用者のブラウザのCookieに保存され、送信時に取り出される仕組みとなっています。なお、送信される情報は図7のとおりです。
情報の窃取に使用されたと思われるWebShell
使用されたWebShellの操作画面は図8のとおりです。ファイルのダウンロード、アップロード、シェルコマンドの実行といったさまざまな機能が備わっており、このWebShellは中国語を主体として書かれています。
おわりに
今回は、JPCERT/CCで確認した管理者側のクレデンシャル情報の窃取等を狙った攻撃の詳細について解説しました。ECサイト本体のセキュリティに問題がなかったとしても、プラグインに脆弱性が存在した場合、これらの被害を受ける可能性があります。対策として、脆弱性情報の確認およびECサイトに係るプラグインも含めたアップデートが重要です。JPCERT/CCでは、今回の攻撃に利用された脆弱性について注意喚起等[3][4][5]を行っていますのであわせてご参照ください。
なお、今回解説した攻撃者のIP/ドメインおよび解説した各ファイルのハッシュ値について、Appendix A、Bに記載していますのでご覧ください。
インシデントレスポンスグループ 増渕 維摩、朝長 秀誠
参考情報
[1] Water Pamola Attacked Online Shops Via Malicious Orders
https://www.trendmicro.com/en_us/research/21/d/water-pamola-attacked-online-shops-via-malicious-orders.html
[2] Adminer
https://www.adminer.org/en/
[3] EC-CUBEのクロスサイトスクリプティングの脆弱性(CVE-2021-20717)に関する注意喚起
https://www.jpcert.or.jp/at/2021/at210022.html
[4]複数のEC-CUBE 3.0系用プラグインにおけるクロスサイトスクリプティングの脆弱性に関する注意喚起
https://www.jpcert.or.jp/at/2021/at210028.html
[5]複数のイーシーキューブ製 EC-CUBE 用プラグインにおける複数のクロスサイトスクリプティングの脆弱性
https://jvn.jp/jp/JVN57524494/
Appendix A: 攻撃者のIP/ドメイン
- 98.126.218[.]141
- http[:]//77i[.]co
- http[:]//xf6[.]site/A
- http[:]//js4[.]io
Appendix B: 使用された各ファイルのSHA256ハッシュ値
注意:ここで記載するハッシュ値は正規のツールが含まれているため、インジケーターとして使用する際は注意してください。
- データベース操作ツール
- 1e1813745f670c469a1c368c45d159ec55656f0a31ed966065a9ca6edd27acc1
- XSSによって実行された管理者のID・パスワード窃取を狙ったJavaScript
- a1876a6af7e17246633e229c4366c0eb9e4b899a0e884253660c8ace5ed9b366