
Python製のPoCスキャナーおよびエクスプロイト。CVE-2026-84434 は Gravity Forms <=3.1.0.4 における、非表示の File Upload フィールドを介した認証不要の任意ファイルアップロードです。check、exploit、mass scan モードをサポートします。
Gravity Forms における CVE-2026-84434 の Python 3 製 PoC スキャナーおよびエクスプロイト。
| プラグイン | gravityforms |
| 影響を受けるバージョン | ≤ 3.1.0.4 |
| 修正バージョン | 3.1.0.5+ (ベンダーセキュリティリリース 3.1.1) |
| CVSS | 9.8 (Critical) |
| 認証 | 未認証 |
| CWE | CWE-434 — 制限なしのアップロード |
| クレジット | 0xd4rk5id3 — EnvoraSec (Wordfence) |
非表示の File Upload フィールドは検証パイプラインにおいて拡張子の検証をスキップしますが、永続化パスでは同等のチェックなしに upload_file() を呼び出す可能性があります。未認証の攻撃者は、Visibility → Hidden に設定された File Upload フィールドを含む公開フォームに POST することができます。
ファイルは wp-content/uploads/gravity_forms/ 以下に保存されます。Gravity Forms は通常、PHP の実行をブロックする .htaccess ルールを追加しますが、RCE はサーバー設定に依存します (nginx、代替 docroot など)。
gform_wrapper と非表示の fileupload フィールド (input_{form}_{field}) を探すgform_submit、is_submit_{id}、非表示 input にファイル)pip install -r requirements.txtpip install -r requirements.txt
# Check single target
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Exploit (built-in benign .txt probe unless --payload-file is set)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7
# Custom upload file (your own probe — not included in this repo)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7 \
--payload-file probe.txt
# Mass exploit from check output
python poc.py --list candidates.jsonl --mode exploit --threads 10 --quiet
| オプション | 説明 |
|---|---|
-u, --url | 単一ターゲットのベース URL |
--list | URL リスト、FOFA 形式の CSV、または candidates.jsonl |
--mode | check (デフォルト) または exploit |
--form-id | Gravity Form ID |
--page-url | フォームをホストするページのパスまたは URL |
--file-field | 非表示のファイルアップロードフィールド ID |
--payload-file | アップロードするローカルファイル (デフォルト: メモリ内の無害な .txt マーカー) |
--paths | フォームを探すためにクロールする追加パス |
--threads, -j | 一括処理の同時実行数 (デフォルト 20) |
--output | JSONL 結果 (デフォルト cve_2026_84434_results.jsonl) |
--vuln-list | ヒットした URL またはエクスプロイト成功 (デフォルト hits.txt) |
--candidates-list | メタデータの確認 (デフォルト candidates.jsonl) |
--quiet | 一括実行時の進捗出力を減らす |
| ファイル | 内容 |
|---|---|
cve_2026_84434_results.jsonl | ターゲットごとの完全な JSON |
hits.txt | 候補のベース URL |
candidates.jsonl | form_id、page_url、file_field / input_name |
status 値 (check)| ステータス | 意味 |
|---|---|
candidate | 脆弱なバージョン + 公開フォーム上の非表示ファイルアップロード |
forms_no_hidden_upload | フォームは見つかったが、HTML 内に非表示ファイルアップロードを持つものはない |
plugin_no_public_forms | プラグインは存在するが、公開フォームが発見されなかった |
patched | バージョン > 3.1.0.4 |
no_plugin | Gravity Forms が検出されなかった |
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
ローカルスキャンリストおよび成果物 (list.txt、*.jsonl、カスタムペイロード) は .gitignore に含まれており、コミットすべきではありません。
許可されたセキュリティテストのみを目的としています。適用される法律およびプログラム規則の遵守はあなたの責任です。