
PluckCMS 4.7.20 の Zip Slip 脆弱性により RCE が発生する
本レポートは、PluckCMS において認証済み攻撃者が Zip Slip 攻撃ベクトルを通じてリモートコード実行を達成できる重大なセキュリティ脆弱性について文書化したものです。この脆弱性はモジュールアップロード機能に存在し、悪意のある PHP コードを含む特別に細工された ZIP アーカイブをアップロードすることで悪用される可能性があります。
4.7.20
脆弱性の種類: Zip Slip によるリモートコード実行 (RCE)
影響を受けるコンポーネント: モジュール管理システム (オプション → モジュール管理)
攻撃ベクトル: 悪意のある ZIP ファイルのアップロード
必要な認証: あり (管理パネルへのアクセス)
深刻度: 重大
この脆弱性は、モジュールアップロード処理中に ZIP アーカイブの内容に対する検証とサニタイズが不十分であることに起因します。PluckCMS は管理者が ZIP 形式でモジュールをアップロードすることを許可しますが、アーカイブに含まれるファイルパスを適切に検証しません。これにより、攻撃者はパストラバーサル脆弱性を悪用する悪意のある ZIP ファイルを作成し、サーバーファイルシステム上の任意の場所にファイルを配置することが可能になります。
ZIP アーカイブが展開されるとき、アプリケーションは展開されたファイルが意図されたディレクトリ構造内に留まることを確認できません。攻撃者はこの弱点を利用して、悪意のある PHP ファイルを Web からアクセス可能な場所に書き込み、その後サーバー上で任意のコードを実行することができます。
以下の環境を使用して脆弱性を再現できます:
git clone https://github.com/pluck-cms/pluck.git
cd pluck
ddev config --project-type=php --docroot=.
ddev start
ホストされた URL : http://pluck.ddev.site
テスト中にコマンド実行機能を示す概念実証ペイロードが使用されました。このペイロードは PHP のシステム実行関数を利用して OS コマンドを実行します。
<?php
$fn = "sys" . "tem";
(string) $fn("id");
?>
この脆弱性の悪用に成功すると、管理アクセス権を持つ認証済み攻撃者は以下を行うことができます:
本脆弱性は管理認証を必要としますが、システム全体の侵害への直接的な経路を提供するため、重大なセキュリティリスクを表します。