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 など)。
攻撃フロー
- Gravity Forms およびバージョン ≤ 3.1.0.4 を検出
- 公開ページをクロールして
gform_wrapper と非表示の fileupload フィールド (input_{form}_{field}) を探す
- 必須の可視フィールドをプレースホルダーで埋める
- マルチパート POST (
gform_submit、is_submit_{id}、非表示 input にファイル)
- 確認メッセージ / エントリのヒント / オプションのマーカーフェッチで確認
要件
- Python 3.9+
pip install -r requirements.txt
使用方法
pip 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
CLI オプション
出力 (一括チェック)
| ファイル | 内容 |
|---|
cve_2026_84434_results.jsonl |
一般的な status 値 (check)
制限事項
- チェックモードでは、公開 HTML にレンダリングされた非表示アップロードフィールドのみを確認できます。管理者専用の非表示フィールドはリモートから発見できません。
- FOFA 形式のリストには、修正済みのサイトや非表示アップロードを持たないフォームが多数含まれています — 候補率は低いと予想されます。
- デフォルトのエクスプロイトは、ウェブシェルではなく無害なテキストマーカーをアップロードします。
リポジトリ構成
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
ローカルスキャンリストおよび成果物 (list.txt、*.jsonl、カスタムペイロード) は .gitignore に含まれており、コミットすべきではありません。
法的注意
許可されたセキュリティテストのみを目的としています。適用される法律およびプログラム規則の遵守はあなたの責任です。