
CVE-2018-11736 の PoC エクスプロイト - Pluck CMS バージョン 4.7.7-dev2 以前に影響するファイルアップロード脆弱性
免責事項 ⚠️: このエクスプロイトは、主にプログラミング入門学習の演習として Rust で開発されました。技術的な厳密さの欠如や慣用的でないコードパターンについてはご容赦ください。また、これは私自身の発見ではなく、公式報告に基づいて作成したものです。
CVE-2018-11736 の PoC エクスプロイトです。Pluck CMS バージョン 4.7.7-dev2 未満に影響します。脆弱性は /data/inc/images.php にあり、攻撃者が任意のファイルをアップロードできます。悪意のある .htaccess ファイルを image/jpeg MIME タイプに偽装してアップロードすることで、Web サーバーに .jpg ファイルを PHP スクリプトとして解釈させ、任意の PHP コード実行を引き起こすことが可能です。
main.rs をコンパイルするには Cargo がインストールされている必要があります。
cargo build
また、対象の Pluck CMS インスタンスから有効な認証済みセッション Cookie が必要です。
./CVE-2018-11736 -h
CVE-2018-11736 エクスプロイト。悪意のある .htaccess をアップロードして Web サーバーに .jpg ファイルを PHP スクリプトとして解釈させ、リモートコード実行 (RCE) を引き起こします
使用法: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
オプション:
-c, --cookie <COOKIE> セッション Cookie (正常にログインした後)。形式: xxxxxxxxxxxx
-u, --base-url <BASE_URL> ベース URL (例: http://localhost)
-H, --hta-path <HTACCESS> .htaccess ファイルへのパス
-i, --image-path <IMAGE> 偽の画像ファイルへのパス
-h, --help ヘルプを表示
-V, --version バージョンを表示
再現性と安全なテストのために、Pluck CMS v4.7.4-dev5 の脆弱なインスタンスを Docker を使用してデプロイできます。デプロイするには、脆弱なバージョンの .zip をダウンロードする必要があります。
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
次に、docker ファイルと同じディレクトリで以下のコマンドを実行します。
docker-compose up -d
Web アプリケーションは http://localhost:8080 で利用可能になります。コンテナ内で TTY を起動するには:
docker exec -it pluck-cms bash
以下は、悪意のある設定のアップロードと RCE を示す PoC の動作です。