【PHP代码审计】Atutor2.2.4 CVE全复现
字数 2250 2025-08-18 17:33:42
ATutor 2.2.4 漏洞分析与复现指南
概述
ATutor 是一个开源基于 Web 的学习管理系统(LCMS),2.2.4 版本存在多个安全漏洞。本文档将详细分析这些漏洞的成因、利用条件和复现方法。
1. 任意文件上传漏洞(教师权限)
利用条件
- 拥有教师权限的用户(可创建和管理课程)
- 版本为 2.2.4
漏洞位置
mods/_core/file_manager/upload.php
漏洞分析
- 后端采用后缀名黑名单过滤机制,但过滤不严谨
- 黑名单检查使用
in_array函数,仅对小写后缀名有效 - 可通过大小写转换(如
phP)或其他 PHP 可解析后缀绕过
可绕过黑名单的后缀
.php3, .php4, .php5, .php7, .php8, .pht, .phar, .phpt, .pgif, .phtml, .phtm
复现步骤
- 使用教师账户创建新课程
- 进入课程的文件管理界面
- 上传恶意文件(使用上述绕过后缀)
- 通过 Burp Suite 抓包,修改文件后缀
- 文件上传路径为:
atutor/content/[course_id]/
文件路径确定方法
- 路径由
$path.$_FILES['uploadedfile']['name']组成 $path由三部分组成:AT_CONTENT_DIR(固定为atutor/content)$_SESSION['course_id'](通过创建课程时的响应获取)$_POST['pathext'](通常为空)
2. 任意文件上传漏洞(管理员权限)
利用条件
- 拥有管理员权限的用户
- 版本为 2.2.4
漏洞位置
mods/_core/languages/language_import.php
漏洞分析
- 上传点仅限管理员访问
- 使用
PclZip类处理上传的压缩包 - 压缩包内容会被解压到
atutor/content/import/目录 - 无有效过滤机制
复现步骤
- 将恶意脚本(如
poc.php)压缩为 ZIP 文件 - 使用管理员账户访问语言导入功能
- 上传恶意 ZIP 文件
- 访问解压后的文件:
atutor/content/import/poc.php
3. 访问控制缺陷(任意用户密码修改)
利用条件
- 版本为 2.2.4
漏洞位置
password_reminder.php
漏洞分析
- 密码重置链接包含三个关键参数:
id:用户 IDg:密码找回链接生成时间(天数)h:sha1(id + g + 用户密码MD5前几位)的子串(第5位开始取15位)
- 时间验证不严格,可通过暴力破解
h参数 - PHP 的弱类型比较导致
id + g + 密码MD5计算异常
复现步骤
- 确定目标用户 ID(如
id=1) - 计算当前时间值:
intval(((time()/60)/60)/24)(约19524) - 设置
g=19524 - 生成可能的
h值字典(基于sha1(id + g + 密码MD5前几位)的子串) - 使用 Burp Suite Intruder 模块爆破
h参数 - 同时设置
form_change和form_password_hidden参数 - 成功后会返回302状态码
4. 反射型XSS
利用条件
- 版本为 2.2.4
漏洞位置
themes/default/include/header.tmpl.php
触发页面
about.php
漏洞分析
header.tmpl.php通过about.php包含about.php定义了AT_INCLUDE_PATH常量$_GET['fb']参数未经充分过滤直接输出- 输出函数调用链:
printNoLookupFeedback()→$msg->addFeedback()→$this->savant->display()
复现步骤
- 访问
about.php?fb=<script>alert(1)</script> - XSS payload 会被执行
5. 存储型XSS(管理员权限)
利用条件
- 拥有管理员权限的用户
- 版本为 2.2.4
漏洞位置
mods/_core/users/admins/my_edit.php
漏洞分析
real_name字段仅使用mysql_real_escape_string过滤- 过滤不处理 HTML 标签和 JavaScript
- 恶意输入会被存储并在管理员页面显示
复现步骤
- 使用管理员账户访问
my_edit.php - 在
real_name字段提交 XSS payload - 保存后访问
index.php,payload 会执行
6. 变量覆盖漏洞(安装配置)
漏洞分析
- 安装过程中跳过步骤5(数据库配置)后,安装页面仍可访问
- 允许二次安装,可能篡改数据库配置
防御建议
- 对所有上传文件实施严格的白名单验证
- 对用户输入实施全面的过滤和转义
- 修复密码重置逻辑中的弱类型比较问题
- 限制管理员功能的访问权限
- 升级到最新版本或应用官方补丁
- 安装完成后删除或禁用安装脚本
总结
ATutor 2.2.4 版本存在多个高危漏洞,包括文件上传、权限绕过、XSS 等。这些漏洞的组合可能允许攻击者完全控制系统。建议用户立即升级或采取适当的缓解措施。