IPBUF安全漏洞报告
English
CVE-2026-28228 CVSS 8.8 高危

CVE-2026-28228 OpenOlat Velocity模板注入致RCE漏洞

披露日期: 2026-03-30

漏洞信息

漏洞编号
CVE-2026-28228
漏洞类型
远程代码执行 (RCE)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
OpenOlat

相关标签

RCESSTIOpenOlatCVE-2026-28228Velocity InjectionRemote Code Execution

漏洞概述

OpenOlat开源e-learning平台在处理邮件模板时存在严重漏洞。拥有Author角色的低权限认证用户可在提醒邮件模板中注入Velocity指令。当系统触发提醒任务时,注入的恶意代码将在服务端被解析执行。攻击者可通过Java反射机制实例化ProcessBuilder类,从而以Tomcat进程权限执行任意系统命令,导致服务器被完全接管。

技术细节

该漏洞属于服务器端模板注入(SSTI)。OpenOlat平台在处理提醒邮件模板时,直接将用户输入的内容传递给Velocity引擎解析,且未对敏感类和方法进行有效过滤。攻击者利用Author角色的编辑权限,构造包含Velocity指令(如#set)的恶意Payload。通过链式调用Java反射机制,攻击者可以访问并执行任意Java类,例如利用java.lang.Runtime.getRuntime().exec()方法。该流程在服务端触发(如通过每日定时任务或手动触发)时,恶意指令会被操作系统执行,从而实现从Web应用到服务器系统的完全控制。

攻击链分析

STEP 1
1. 信息收集与认证
攻击者确定目标运行受影响版本的OpenOlat,并获取一个具有Author角色的低权限账户。
STEP 2
2. 注入Payload
攻击者登录系统,访问提醒邮件模板编辑功能,并在模板字段中注入恶意的Velocity模板代码(包含Java反射调用)。
STEP 3
3. 触发解析
攻击者手动触发提醒发送,或等待系统每日的Cron定时任务自动处理提醒邮件。
STEP 4
4. 代码执行
Velocity引擎在服务端解析模板,执行恶意指令,攻击者成功在服务器上执行操作系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#set($x='') #set($exec=$x.getClass().forName('java.lang.Runtime').getRuntime().exec('whoami')) #set($input=$exec.getInputStream()) #set($output=$x.getClass().forName('java.io.BufferedReader').getConstructor($x.getClass().forName('java.io.Reader')).newInstance($x.getClass().forName('java.io.InputStreamReader').getConstructor($x.getClass().forName('java.io.InputStream')).newInstance($input))) $output.readLine()

影响范围

OpenOlat < 19.1.31
OpenOlat >= 20.1, < 20.1.18
OpenOlat >= 20.2, < 20.2.5

防御指南

临时缓解措施
如果无法立即升级,应严格限制拥有Author角色的用户访问邮件模板编辑功能。建议管理员检查现有邮件模板中是否存在异常的Velocity语法,并监控服务器是否存在非预期的进程创建行为。

参考链接

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