IPBUF安全漏洞报告
English
CVE-2025-11345 CVSS 5.5 中危

CVE-2025-11345:ILIAS Test Import组件反序列化漏洞

披露日期: 2025-10-06

漏洞信息

漏洞编号
CVE-2025-11345
漏洞类型
反序列化漏洞(PHP Object Injection)
CVSS评分
5.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
ILIAS(开源学习管理系统)

相关标签

CVE-2025-11345反序列化漏洞PHP Object InjectionILIAS学习管理系统LMS远程代码执行RCE中危漏洞Test Import

漏洞概述

CVE-2025-11345 是 ILIAS 学习管理系统中 Test Import(测试导入)组件存在的一个反序列化漏洞。该漏洞影响 ILIAS 8.23 及以下版本、9.13 及以下版本以及 10.1 及以下版本。漏洞位于 Test Import 功能的 unserialize 函数中,攻击者可以通过精心构造的序列化数据触发 PHP 反序列化操作,从而实现远程攻击。

ILIAS 是一款广泛使用的开源学习管理系统(e-Learning/LMS),被众多高校、培训机构和企业用于在线教学与课程管理。Test Import 是其核心功能之一,允许管理员导入测试题库。由于该组件未对用户输入的序列化数据进行充分验证,攻击者可以在反序列化过程中注入恶意对象,导致任意代码执行或数据篡改等安全风险。

该漏洞的 CVSS 3.1 评分为 5.5,属于中危级别。攻击者需要具备低权限账户(如普通用户或教师账户),并需要用户交互(如导入测试文件)才能触发漏洞。成功利用后,攻击者可以对系统的机密性、完整性和可用性造成低级别的影响。

该漏洞已由 SRLabs 安全研究团队发现并报告,其博客文章详细描述了如何利用 ILIAS 的三个漏洞实现远程代码执行(RCE),本漏洞是其中之一。官方已在版本 8.24、9.14 和 10.2 中修复了该问题,建议用户尽快升级。

技术细节

该漏洞的核心问题在于 ILIAS Test Import 组件在处理用户上传的测试数据时,调用了 PHP 的 unserialize() 函数来反序列化用户可控的数据,而未对输入进行充分的过滤和验证。

PHP 的 unserialize() 函数在反序列化过程中可以实例化任意类,如果应用程序中存在可被利用的魔术方法(如 __wakeup()、__destruct()、__toString() 等),攻击者就可以通过构造特定的序列化字符串触发这些魔术方法,从而实现各种攻击,包括但不限于:任意文件读写、SQL注入、远程代码执行等。

利用方式如下:
1. 攻击者首先需要获取一个低权限账户(如学生或教师账户)。
2. 攻击者构造一个恶意的序列化 payload,其中包含指向危险类(如文件操作类、命令执行类等)的对象引用。
3. 攻击者通过 Test Import 功能上传包含恶意序列化数据的测试文件。
4. 服务器在导入过程中调用 unserialize() 对数据进行处理,触发恶意对象的魔术方法。
5. 攻击者实现远程代码执行或数据窃取。

该漏洞的利用需要用户交互(UI:R),这意味着攻击者需要诱使目标用户执行导入操作,或者攻击者自身拥有合法账户来触发漏洞。

攻击链分析

STEP 1
步骤1:获取账户
攻击者通过注册或社工方式获取 ILIAS 系统的低权限账户(学生或教师账户),因为漏洞利用需要低权限认证(PR:L)。
STEP 2
步骤2:构造恶意序列化数据
攻击者分析 ILIAS 系统中可用的 PHP 类及其魔术方法,构造包含恶意对象引用的序列化 payload,利用现有的 gadget chain 实现代码执行。
STEP 3
步骤3:制作恶意测试导入文件
攻击者将恶意序列化数据嵌入到合法的测试导入文件格式(如 QTI/XML 格式)中,制作成可通过 Test Import 功能上传的文件。
STEP 4
步骤4:触发反序列化漏洞
攻击者通过 Test Import 功能上传恶意文件,触发服务器端 unserialize() 函数对恶意数据的反序列化处理,执行恶意代码。
STEP 5
步骤5:实现远程代码执行
成功利用后,攻击者可以在服务器上执行任意命令,窃取敏感数据,或进一步提权获取系统控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php // CVE-2025-11345 - ILIAS Test Import Deserialization PoC // This PoC demonstrates the concept of exploiting the unserialize() vulnerability // in ILIAS Test Import component. // Step 1: Craft a malicious serialized payload // The payload targets PHP magic methods to achieve code execution class ExploitChain { // Example gadget chain - actual exploitation requires identifying // available classes in the target ILIAS installation private $command; public function __construct($cmd) { $this->command = $cmd; } // __destruct is triggered during unserialization cleanup public function __destruct() { // This is where the malicious action would occur // In real exploitation, this would leverage existing ILIAS classes // to execute system commands or read/write files } } // Step 2: Serialize the malicious object $payload = serialize(new ExploitChain("id")); // Step 3: The serialized payload would be embedded in a test import file // (e.g., XML or QTI format used by ILIAS Test Import) // and uploaded through the Test Import functionality // Step 4: When ILIAS processes the import, unserialize() is called // on the user-controlled data, triggering the exploit chain $decoded = unserialize($payload); echo "PoC payload generated: " . $payload . "\n"; echo "Upload this payload via ILIAS Test Import to trigger CVE-2025-11345\n"; ?>

影响范围

ILIAS <= 8.23
ILIAS 9.x <= 9.13
ILIAS 10.x <= 10.1

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制 Test Import 功能的使用权限,仅允许可信管理员操作;2)在 Web 应用防火墙中添加规则,检测和阻止包含 PHP 序列化数据特征的请求(如 O:数字 格式的字符串);3)监控 Test Import 相关日志,及时发现异常导入行为;4)对上传的测试文件进行严格的格式和内容验证,拒绝包含可疑序列化数据的文件。

参考链接

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