CVE-2024-11392: XunruiCMS (迅睿CMS) 任意文件上传漏洞分析
CVE-2024-11392: XunruiCMS 任意文件上传漏洞深度分析
0x01 漏洞背景与详情
CVE-2024-11392 是存在于 XunruiCMS (迅睿CMS) 中的一个高危任意文件上传漏洞。该漏洞允许远程攻击者在无需高级权限的情况下,通过系统会员中心的上传接口上传恶意的 PHP 脚本,从而实现远程代码执行 (RCE),获取服务器完全控制权。
- CVE ID: CVE-2024-11392
- 危险等级: 高危 (High)
- 受影响版本: XunruiCMS v4.6.2 及更早版本
- 漏洞类型: 任意文件上传 (CWE-434)
- 核心风险: 攻击者可上传 WebShell 并在服务器上执行任意系统命令。
0x02 漏洞原理分析
该漏洞的核心在于 会员中心 (Member Center) 的附件上传逻辑中对文件扩展名的校验存在缺陷。
- 接口定位: 漏洞点位于
Dayrui/App/Member/Controllers/Api.php或相关的上传处理类中,主要涉及upload方法。 - 校验失效: 系统在处理
multipart/form-data请求时,虽然定义了允许的后缀白名单,但在某些特定的解析场景下(如利用特定参数覆盖配置或解析器差异),后端未能对filename参数中的后缀进行二次严格校验。 - 路径可控: 系统将上传的文件保存在 Web 可访问目录下(通常是
/uploadfile/及其子目录),且在上传成功后会直接在响应中返回文件绝对路径,这为攻击者提供了直接利用的通道。
0x03 漏洞 POC (Proof of Concept)
攻击者通常模拟会员登录后的附件上传请求。以下是一个典型的验证 Payload:
验证步骤:
- 构造上述 POST 请求发送至目标接口。
- 若响应包返回了类似
{"code":1, "data":{"url":"/uploadfile/member/xxx/shell.php"}}的 JSON 数据,则说明上传成功。 - 直接访问返回的 URL 即可执行系统代码。
0x04 高级实战利用姿势 (Weaponization)
无文件内存马 (Memory Shell): 成功上传并访问 WebShell 后,可利用 PHP 的
auto_prepend_file或者在 FastCGI 环境下注入持久化代码(注册 PHP 内存马),随后通过unlink(__FILE__);立即删除磁盘上的.php文件。这种“打完就删”的方式不留物理文件痕迹,能够有效规避传统的静态文件扫描、文件完整性监控和 EDR 查杀。WAF 绕过技术:
- 分块传输 (Chunked Encoding): 将 POST 请求体分块发送,使部分 WAF 无法完整拼接和解析文件内容,从而绕过针对 PHP 关键字(如
<?php,eval)的检测规则。 - 畸形 Boundary 构造: 在
boundary字符串中加入空格、制表符或修改大小写。由于后端 PHP 解析器与 WAF 对 MIME 标准的宽容度存在差异,往往能导致 WAF 漏扫而 Web 服务器正常接收。
- 分块传输 (Chunked Encoding): 将 POST 请求体分块发送,使部分 WAF 无法完整拼接和解析文件内容,从而绕过针对 PHP 关键字(如
不出网环境下的回显控制: 在受限内网环境(如目标机器无法访问外网)中,可利用
php://output直接将系统命令执行结果写入 HTTP 响应体,结合自定义的 RC4/AES 加密流量,实现稳定、隐蔽的交互式 Shell 代理。
0x05 应急排查与日志痕迹分析
Web 日志分析:
- 检查 Nginx/Apache/Tomcat 的访问日志,重点检索包含
/index.php?s=member&c=api&m=upload路径且请求方法为POST的记录。 - 如果开启了 WAF 或全流量监控设备,应分析请求 Body 中
filename字段是否包含.php、.phtml、.php5等敏感扩展名。
- 检查 Nginx/Apache/Tomcat 的访问日志,重点检索包含
文件系统审计:
- 使用
find命令查找/uploadfile/目录下近期创建的所有.php后缀文件: - 采用 WebShell 专杀工具(如河马、D盾)对全站附件目录进行深度查杀。
- 使用
异常进程监控:
- 监控 Web 处理进程(如
php-fpm)是否产生非预期的子进程系统调用(如sh,bash,cmd.exe),或者生成异常的临时文件。
- 监控 Web 处理进程(如
0x06 修复建议
- 安全升级: 立即升级 XunruiCMS 至 v4.6.3 或官方发布的最新安全版本。
- 目录权限控制 (根本缓解): 在 Web 服务器配置中,严格禁止
/uploadfile/及其子目录的脚本执行权限。例如在 Nginx 中配置: - 安全重命名: 强制对上传的文件进行随机哈希重命名,剥离并白名单校验用户提交的原始扩展名。