某OA接口绕过后任意文件上传分析
字数 907 2025-08-05 08:17:46

某OA系统接口绕过及任意文件上传漏洞分析

漏洞概述

该漏洞存在于某OA系统中,攻击者可以通过特定方式绕过系统安全防护机制,进而实现任意文件上传,最终可能导致远程代码执行。

漏洞利用接口

/weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp

权限绕过机制分析

安全防护规则触发

系统设置了全局安全防护规则 weaver.security.rules.SecurityRuleQX20,当请求URL中包含以下字符时会触发防护:

  • weaver
  • common
  • ctrl

绕过原理

系统在 weaver.filter.SecurityFilter 中实现了以下白名单检查:

Object localObject7 = str2.toLowerCase().trim();          
if ((((String)localObject7).endsWith(".cur")) || 
    (((String)localObject7).endsWith(".ico")) || 
    (((String)localObject7).endsWith(".css")) || 
    (((String)localObject7).endsWith(".png")) || 
    (((String)localObject7).endsWith(".jpg")) || 
    (((String)localObject7).endsWith(".gif")))
{
    // 跳过安全检查
    paramFilterChain.doFilter(paramHttpServletRequest, paramHttpServletResponse);
}

当URL以以下扩展名结尾时,会跳过安全检查:

  • .cur
  • .ico
  • .css
  • .png
  • .jpg
  • .gif

验证方法

  1. 正常访问接口(返回403):

    /weaver/weaver.common.Ctrl/
    
  2. 添加.css后缀访问(返回200):

    /weaver/weaver.common.Ctrl/.css
    

任意文件上传分析

漏洞利用链

  1. 通过.css后缀绕过安全防护
  2. 访问weaver.common.Ctrl接口
  3. 传递参数:
    • arg0=com.cloudstore.api.service.Service_CheckApp
    • arg1=validateApp
  4. 系统调用Service_CheckApp.validateApp()方法

文件上传流程

  1. validateApp函数处理前端传入的数据流
  2. 数据被当作ZIP压缩包处理
  3. 调用createLocalApp函数
  4. 最终调用decompress函数进行文件解压

漏洞复现步骤

  1. 构造恶意请求:

    POST /weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp
    

    附带恶意ZIP文件作为请求体

  2. 系统会解压ZIP文件到服务器指定目录

防护建议

  1. 修改安全过滤规则,确保所有敏感接口都经过严格验证
  2. 对文件上传功能进行严格限制:
    • 检查文件类型
    • 限制上传目录
    • 禁止解压到web目录
  3. 更新系统到最新版本
  4. weaver.common.Ctrl接口进行访问控制

扩展利用

除了.css后缀,攻击者还可以使用以下后缀进行绕过:

  • .cur
  • .ico
  • .png
  • .jpg
  • .gif

日志分析

系统会在触发安全规则时记录日志,可通过查看weaver.security.rules.SecurityRuleQX20相关日志发现攻击尝试。

某OA系统接口绕过及任意文件上传漏洞分析 漏洞概述 该漏洞存在于某OA系统中,攻击者可以通过特定方式绕过系统安全防护机制,进而实现任意文件上传,最终可能导致远程代码执行。 漏洞利用接口 权限绕过机制分析 安全防护规则触发 系统设置了全局安全防护规则 weaver.security.rules.SecurityRuleQX20 ,当请求URL中包含以下字符时会触发防护: weaver common ctrl 绕过原理 系统在 weaver.filter.SecurityFilter 中实现了以下白名单检查: 当URL以以下扩展名结尾时,会跳过安全检查: .cur .ico .css .png .jpg .gif 验证方法 正常访问接口(返回403): 添加.css后缀访问(返回200): 任意文件上传分析 漏洞利用链 通过 .css 后缀绕过安全防护 访问 weaver.common.Ctrl 接口 传递参数: arg0=com.cloudstore.api.service.Service_CheckApp arg1=validateApp 系统调用 Service_CheckApp.validateApp() 方法 文件上传流程 validateApp 函数处理前端传入的数据流 数据被当作ZIP压缩包处理 调用 createLocalApp 函数 最终调用 decompress 函数进行文件解压 漏洞复现步骤 构造恶意请求: 附带恶意ZIP文件作为请求体 系统会解压ZIP文件到服务器指定目录 防护建议 修改安全过滤规则,确保所有敏感接口都经过严格验证 对文件上传功能进行严格限制: 检查文件类型 限制上传目录 禁止解压到web目录 更新系统到最新版本 对 weaver.common.Ctrl 接口进行访问控制 扩展利用 除了 .css 后缀,攻击者还可以使用以下后缀进行绕过: .cur .ico .png .jpg .gif 日志分析 系统会在触发安全规则时记录日志,可通过查看 weaver.security.rules.SecurityRuleQX20 相关日志发现攻击尝试。