IPBUF安全漏洞报告
English
CVE-2026-4333 CVSS 6.4 中危

CVE-2026-4333: LearnPress插件存储型XSS漏洞

披露日期: 2026-04-08

漏洞信息

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

相关标签

XSSStored XSSWordPressLearnPressCVE-2026-4333Web Security

漏洞概述

LearnPress WordPress LMS插件在4.3.3及以下版本中存在存储型跨站脚本(XSS)漏洞。该漏洞源于`learn_press_courses`短代码的`skin`属性未经过充分的输入清理和输出转义。具有Contributor及以上权限的攻击者可利用此漏洞向页面注入恶意Web脚本,当其他用户访问被注入的页面时,脚本将在其浏览器中执行,导致窃取凭据或进行恶意操作。

技术细节

该漏洞位于LearnPress插件处理`learn_press_courses`短代码的组件中。具体而言,在`inc/Shortcodes/Courses/ListCoursesShortcode.php`文件内,代码直接获取`skin`属性的值并将其传递给`sprintf()`函数,用于动态生成HTML标签的`class`和`data-layout`属性。由于开发者在输出数据时未使用WordPress标准的`esc_attr()`函数进行属性转义,导致特殊字符(如双引号、尖括号)未被过滤。攻击者利用Contributor权限编辑文章,插入精心构造的短代码(例如`[learn_press_courses skin="" onmouseover=alert(1) ""]`),即可将恶意JavaScript注入页面。当其他用户浏览该文章时,恶意脚本将在浏览器端自动执行,可能导致会话劫持或恶意重定向。

攻击链分析

STEP 1
1. 获取权限
攻击者注册或获取一个具有Contributor(投稿者)及以上权限的WordPress账户。
STEP 2
2. 注入Payload
攻击者创建或编辑一篇新文章/页面,并在内容中插入包含恶意JavaScript的`learn_press_courses`短代码,利用`skin`属性注入XSS载荷。
STEP 3
3. 存储Payload
文章被保存并发布,恶意短代码被存储在WordPress数据库中。
STEP 4
4. 触发漏洞
当普通用户或管理员访问包含该短代码的页面时,服务器解析短代码并渲染未经过滤的HTML。
STEP 5
5. 执行攻击
受害者的浏览器解析并执行注入的恶意JavaScript脚本,攻击者可借此窃取Cookie或执行进一步操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC: Stored XSS in LearnPress via 'skin' attribute --> <!-- Attacker creates a page with this shortcode content --> [learn_press_courses skin="" onmouseover=alert(1) ""] <!-- Explanation: The payload breaks out of the attribute string. Resulting HTML roughly looks like: <div class="..." data-layout="" onmouseover=alert(1) "" ...> --> <script> // Alternative payload to test execution alert(document.cookie); </script>

影响范围

LearnPress – WordPress LMS Plugin <= 4.3.3

防御指南

临时缓解措施
如果无法立即升级插件,建议暂时禁用LearnPress插件中的课程列表功能,或通过代码修改在`ListCoursesShortcode.php`文件中对`skin`参数强制使用`esc_attr()`函数进行转义。同时,应严格审查网站内容,防止恶意短代码被发布。

参考链接

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