某OA前台任意文件上传分析
字数 1493 2025-08-24 16:48:16

某OA前台任意文件上传漏洞分析与利用教学文档

漏洞概述

该漏洞存在于某OA系统的集群功能中,允许攻击者在特定条件下实现前台任意文件上传,最终可能导致远程代码执行。漏洞在10.58.3版本中被修复。

利用条件

  1. 目标系统必须开启集群模式
  2. 目标系统未配置MainControlIP参数(默认安装不配置)

漏洞分析

受影响文件

补丁中禁用了以下与集群相关的URI,其中涉及文件上传的有:

  • clusterUpgrade.jsp
  • uploadFileClient.jsp
  • uploadFileServer.jsp(需要验证用户信息)

安全认证机制

上传操作前会进行两层安全认证:

  1. IP校验

    • 系统首先判断应用程序类别(默认返回"ecology")
    • 从请求中获取IP地址并与weaver.properties文件中的MainControlIP进行匹配
    • 使用重写的getRemoteAddr方法获取IP,会从X-Forwarded-For头中取值,存在IP伪造可能
  2. Token校验

    • 从数据库查询license值作为加密Key
    • 通过tokenCheck.jsp泄漏license信息
    • 使用硬编码密钥ecology2018_upgrade进行DES加密

上传流程

  1. 上传方法会再次进行安全检查
  2. 限制上传文件必须为ZIP格式
  3. 上传路径固定为:C:\WEAVER\ecology\WEB-INF\versionupgrade\upload
  4. 通过clusterUpgrade.jspupgrade功能解压ZIP文件
    • 默认解压路径:C:\WEAVER\ecology\versionupgrade\temp

漏洞利用步骤

第一步:获取Token

  1. 访问tokenCheck.jsp接口获取加密的license信息
  2. 使用DES算法和密钥ecology2018_upgrade解密获取真实license
  3. 构造合法的token

第二步:文件上传

  1. 准备恶意ZIP文件,包含JSP webshell
  2. 通过伪造X-Forwarded-For头绕过IP检查
  3. 使用获取的token调用上传接口:
    • clusterUpgrade.jsp
    • uploadFileClient.jsp

第三步:触发解压

  1. 调用clusterUpgrade.jspupgrade功能
  2. 系统会自动解压上传的ZIP文件
  3. Webshell将被解压到:C:\WEAVER\ecology\versionupgrade\temp

漏洞检测方法

  1. 检查上传接口是否可访问(clusterUpgrade.jspuploadFileClient.jsp
    • 仅能判断目标是否更新到最新补丁或禁用相关接口
    • 无法直接检测是否配置了集群模式

修复方案

  1. 升级到官方发布的10.58.3版本

  2. 在WAF或应用防火墙中拦截对以下接口的访问:

    • clusterUpgrade.jsp
    • uploadFileClient.jsp
    • uploadFileServer.jsp
    • tokenCheck.jsp
  3. 配置weaver.properties中的MainControlIP参数

  4. 限制X-Forwarded-For头的使用

技术要点总结

  1. 漏洞利用依赖集群模式且未配置MainControlIP
  2. IP校验可通过X-Forwarded-For头绕过
  3. Token校验通过tokenCheck.jsp泄漏的信息可绕过
  4. 上传限制为ZIP文件,但解压后可以包含任意文件
  5. 最终利用需要触发解压操作才能实现任意文件上传
某OA前台任意文件上传漏洞分析与利用教学文档 漏洞概述 该漏洞存在于某OA系统的集群功能中,允许攻击者在特定条件下实现前台任意文件上传,最终可能导致远程代码执行。漏洞在10.58.3版本中被修复。 利用条件 目标系统必须开启集群模式 目标系统未配置 MainControlIP 参数(默认安装不配置) 漏洞分析 受影响文件 补丁中禁用了以下与集群相关的URI,其中涉及文件上传的有: clusterUpgrade.jsp uploadFileClient.jsp uploadFileServer.jsp (需要验证用户信息) 安全认证机制 上传操作前会进行两层安全认证: IP校验 : 系统首先判断应用程序类别(默认返回"ecology") 从请求中获取IP地址并与 weaver.properties 文件中的 MainControlIP 进行匹配 使用重写的 getRemoteAddr 方法获取IP,会从 X-Forwarded-For 头中取值,存在IP伪造可能 Token校验 : 从数据库查询license值作为加密Key 通过 tokenCheck.jsp 泄漏license信息 使用硬编码密钥 ecology2018_upgrade 进行DES加密 上传流程 上传方法会再次进行安全检查 限制上传文件必须为ZIP格式 上传路径固定为: C:\WEAVER\ecology\WEB-INF\versionupgrade\upload 通过 clusterUpgrade.jsp 的 upgrade 功能解压ZIP文件 默认解压路径: C:\WEAVER\ecology\versionupgrade\temp 漏洞利用步骤 第一步:获取Token 访问 tokenCheck.jsp 接口获取加密的license信息 使用DES算法和密钥 ecology2018_upgrade 解密获取真实license 构造合法的token 第二步:文件上传 准备恶意ZIP文件,包含JSP webshell 通过伪造 X-Forwarded-For 头绕过IP检查 使用获取的token调用上传接口: clusterUpgrade.jsp uploadFileClient.jsp 第三步:触发解压 调用 clusterUpgrade.jsp 的 upgrade 功能 系统会自动解压上传的ZIP文件 Webshell将被解压到: C:\WEAVER\ecology\versionupgrade\temp 漏洞检测方法 检查上传接口是否可访问( clusterUpgrade.jsp 、 uploadFileClient.jsp ) 仅能判断目标是否更新到最新补丁或禁用相关接口 无法直接检测是否配置了集群模式 修复方案 升级到官方发布的10.58.3版本 在WAF或应用防火墙中拦截对以下接口的访问: clusterUpgrade.jsp uploadFileClient.jsp uploadFileServer.jsp tokenCheck.jsp 配置 weaver.properties 中的 MainControlIP 参数 限制 X-Forwarded-For 头的使用 技术要点总结 漏洞利用依赖集群模式且未配置 MainControlIP IP校验可通过 X-Forwarded-For 头绕过 Token校验通过 tokenCheck.jsp 泄漏的信息可绕过 上传限制为ZIP文件,但解压后可以包含任意文件 最终利用需要触发解压操作才能实现任意文件上传