
第2のCVEは依然としてリモートコード実行
CVE-2026-35196 · Chamilo LMS · OSコマンドインジェクション → RCE
研究者: K
開示タイプ: 責任ある開示
ステータス: 修正済み 影響を受ける製品: Chamilo LMS< 2.0(v1.11.32で確認)
Chamilo LMS v1.11.32 の main/inc/ajax/gradebook.ajax.php における export_all_certificates アクションに、重大な OSコマンドインジェクション の脆弱性が存在します。
アプリケーションは api_get_course_id() を介してコースコードを取得し、これは $_SESSION['_cid'] から直接読み取られます。このセッション由来の値は、無害化されずに shell_exec() 呼び出しに連結されます — escapeshellarg() もホワイトリスト検証も型チェックもありません。
攻撃者は、セッションの _cid 変数を操作または汚染できる場合(セッションポイズニング、IDOR連鎖、またはその他のセッション操作プリミティブを介して)、任意のシェルメタ文字を注入し、Webサーバーユーザー(www-data)として完全なリモートコード実行を達成できます。
脆弱なファイル: main/inc/ajax/gradebook.ajax.php
脆弱な関数: export_all_certificates
ユーザーが export_all_certificates アクションをトリガーすると、スクリプトは証明書を処理するためのバックグラウンドプロセスを実行しようとします:
$courseCode = api_get_course_id(); // Retrieves the value from $_SESSION['_cid']
$sessionId = api_get_session_id();
// ...
$commandScript = api_get_path(SYS_CODE_PATH).'gradebook/cli/export_all_certificates.php';
$userList = implode(',', $userList);
// Flaw: Variables like $courseCode are passed directly to the shell without escapeshellarg()
shell_exec("php $commandScript $courseCode $sessionId $categoryId $userList > /dev/null &");
アプリケーションが暗黙的にセッション変数の内容を信頼し、システムシェルに送信する前に適切にエスケープできないため、操作されたセッションを持つ攻撃者は悪意のあるコマンドを追記して実行できます。例えば、_cid に "; touch /tmp/remote_code_by_k; #" が含まれている場合、bash/shシェルによって解釈されるコマンドは次のようになります:
php /var/www/chamilo/main/gradebook/cli/export_all_certificates.php ; touch /tmp/remote_code_by_k; # ... > /dev/null &
シェルはCLIスクリプトを実行し、その後に注入されたペイロードを実行し、本来のコマンド文字列の残りを無視します。
$_SESSION['_cid'] 変数に影響を与える必要があります。これは、この欠陥をセッションポイズニング脆弱性と連鎖させるか、アプリケーションの他の場所でのIDORや安全でないパラメータ処理を介してコースコードの値を操作し、セッションコンテキストを更新することで達成できます。_cid セッション変数を次のように設定します: "; [MALICIOUS_COMMAND]; #"GET リクエストを /main/inc/ajax/gradebook.ajax.php?a=export_all_certificates&cat_id=1 に送信します。www-data)の権限で注入されたコマンドを盲目的に実行します。escapeshellarg() の適用: shell_exec() に渡す前に、すべてのユーザー由来の変数($courseCode、$sessionId、$userList など)をPHPの escapeshellarg() でラップして、任意のOSメタ文字を無害化してください。$_SESSION['_cid'])が厳密に型指定され、サニタイズされるようにして、潜在的な「セッションポイズニング」やIDOR連鎖攻撃がエントリポイントでブロックされるようにしてください。www-data)に制限的なファイルシステム書き込み権限を設定し、アプリケーションのアクセスを必須のLinuxシェルバイナリに制限して、事後の悪用可能性を軽減してください。Handle : K
GitHub : https://github.com/kx00007
Focus : Server-Side Vulnerability RCE, CVE Hunting, Vulnerability Research, Exploit Development
Prior : CVE-2026-29041 (Chamilo LMS — Authenticated RCE via File Upload)
⚡もっと頑張れ。
| フィールド | 詳細 |
|---|
| 製品 | Chamilo LMS |
| 影響を受けるバージョン | < 2.0 (v1.11.32 で確認) |
| 脆弱性 | OSコマンドインジェクション |
| CWE | CWE-78 — OSコマンドに使用される特殊要素の不適切な無害化 |
| CVSSv3.1 スコア | 8.8 (HIGH) |
| ベクトル | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 認証必須 | はい(セッションが汚染された認証ユーザー) |
| エクスプロイトタイプ | 認証されたリモートコード実行 |
| 脆弱なファイル | main/inc/ajax/gradebook.ajax.php |
| 次元 |
|---|
| 影響 |
|---|
| 機密性 | 完全な読み取りアクセス — ソースコード、設定、DB認証情報、/etc/passwd |
| 完全性 | 任意のファイル書き込み、ウェブシェルの展開、データベース操作 |
| 可用性 | サービスの中断、ファイルシステムの破壊、ランサムウェアの展開 |
| 範囲 | Webサーバープロセス(www-data); 認証情報の露出による横方向移動の可能性 |
| コンポーネント | 詳細 |
|---|
| OS | Ubuntu Server (Docker) |
| ウェブサーバー | Apache / Nginx |
| PHP | 7.x / 8.x |
| アプリケーション | Chamilo LMS v1.11.32-v2.0 |
| シェル | /bin/sh → bash |