IPBUF安全漏洞报告
English
CVE-2025-14387 CVSS 6.4 中危

CVE-2025-14387 | LearnPress WordPress LMS Plugin 存储型XSS漏洞

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-14387
漏洞类型
存储型XSS (Stored Cross-Site Scripting)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LearnPress WordPress LMS Plugin

相关标签

存储型XSSWordPress插件漏洞LearnPress LMSCVE-2025-14387跨站脚本攻击认证用户漏洞WordPress安全低权限提权

漏洞概述

CVE-2025-14387是WordPress最流行的学习管理系统(LMS)插件LearnPress中的一个高危安全漏洞。该漏洞为存储型跨站脚本攻击(XSS),存在于插件所有版本直至4.3.1版本。漏洞的根本原因在于插件对用户输入的数据缺乏充分的输入 sanitization(清理)和输出 escaping(转义)机制。攻击者只需拥有WordPress网站的Subscriber(订阅者)级别账户,即可利用此漏洞在页面中注入恶意JavaScript代码。由于是存储型XSS,恶意脚本会被永久保存在服务器数据库中,当其他用户访问包含恶意代码的页面时,攻击代码会在受害者浏览器中自动执行。这可能导致会话劫持、敏感信息窃取、钓鱼攻击传播或进一步的管理权限提升等严重后果。考虑到LearnPress被全球数百万个WordPress网站使用,该漏洞影响范围广泛,建议所有使用者立即采取修复措施。

技术细节

LearnPress插件在处理用户提交的内容(如课程标题、课程描述、问题内容等)时,直接将用户输入存储到数据库而未进行充分的输入验证和清理。当这些数据被输出到网页时,插件同样未对特殊字符进行正确的HTML转义处理,导致攻击者可以注入任意HTML和JavaScript代码。攻击者利用Subscriber级别权限(WordPress最低权限级别之一),即可在课程创建或编辑过程中插入恶意脚本。由于该脚本被存储在数据库中,每次有用户访问相关课程页面时都会触发执行,形成持久的攻击向量。CVSS 3.1评分6.4(AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N)表明该漏洞可通过网络利用,复杂度低,需要低权限认证但无需用户交互,且对机密性和完整性有较低影响。修复方案已在GitHub commit 3bdaa63920c7d485e7efa7c92d3f19273a2916ff中提供,主要通过添加wp_kses函数进行输入清理和htmlspecialchars进行输出转义来修复。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress Subscriber级别账户,或通过其他方式(如注册功能)获得低权限账户
STEP 2
步骤2
攻击者登录WordPress后台,通过LearnPress插件的课程创建/编辑功能提交包含恶意JavaScript代码的课程标题或描述
STEP 3
步骤3
恶意脚本被存储在数据库中,由于插件未进行输入清理,脚本内容原样保存
STEP 4
步骤4
当其他用户(如学生或管理员)访问该课程页面时,服务器从数据库读取并输出未转义的内容
STEP 5
步骤5
受害者浏览器执行注入的JavaScript代码,攻击者可窃取Cookie、会话令牌或其他敏感信息
STEP 6
步骤6
攻击者利用窃取的凭证进行会话劫持,提升权限或执行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-14387 PoC - Stored XSS in LearnPress LMS Plugin // Prerequisites: WordPress account with Subscriber role or higher // Step 1: Authenticate and get nonce // Step 2: Create or edit a course with XSS payload in title/description // Example XSS payload in course title: const xssPayload = '<script>alert(document.cookie)</script>'; // HTTP POST request to create course: const createCourseRequest = { method: 'POST', url: 'https://target-site.com/wp-admin/admin-ajax.php', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie': 'wordpress_logged_in_xxx=xxx' }, body: 'action=learnpress_save_course&nonce=xxx&post_title=<script>alert(document.cookie)</script>&post_content=<img src=x onerror=alert(1)>' }; // When other users visit the course page, the XSS will execute automatically. // This can lead to session hijacking, credential theft, or further attacks. // Remediation: Update to LearnPress version 4.3.2 or later // GitHub fix: https://github.com/LearnPress/learnpress/commit/3bdaa63920c7d485e7efa7c92d3f19273a2916ff

影响范围

LearnPress WordPress LMS Plugin <= 4.3.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 禁用或限制新用户注册功能,防止攻击者获取Subscriber账户;2) 使用WordPress安全插件限制低权限用户的课程创建和编辑功能;3) 实施严格的Content Security Policy头部,阻止内联脚本执行;4) 定期审查所有LearnPress创建的课程内容,删除可疑的JavaScript代码;5) 考虑暂时禁用LearnPress插件,直至完成安全更新。

参考链接

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