某OA前台任意文件上传分析
字数 1493 2025-08-24 16:48:16
某OA前台任意文件上传漏洞分析与利用教学文档
漏洞概述
该漏洞存在于某OA系统的集群功能中,允许攻击者在特定条件下实现前台任意文件上传,最终可能导致远程代码执行。漏洞在10.58.3版本中被修复。
利用条件
- 目标系统必须开启集群模式
- 目标系统未配置
MainControlIP参数(默认安装不配置)
漏洞分析
受影响文件
补丁中禁用了以下与集群相关的URI,其中涉及文件上传的有:
clusterUpgrade.jspuploadFileClient.jspuploadFileServer.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.jspuploadFileClient.jsp
第三步:触发解压
- 调用
clusterUpgrade.jsp的upgrade功能 - 系统会自动解压上传的ZIP文件
- Webshell将被解压到:
C:\WEAVER\ecology\versionupgrade\temp
漏洞检测方法
- 检查上传接口是否可访问(
clusterUpgrade.jsp、uploadFileClient.jsp)- 仅能判断目标是否更新到最新补丁或禁用相关接口
- 无法直接检测是否配置了集群模式
修复方案
-
升级到官方发布的10.58.3版本
-
在WAF或应用防火墙中拦截对以下接口的访问:
clusterUpgrade.jspuploadFileClient.jspuploadFileServer.jsptokenCheck.jsp
-
配置
weaver.properties中的MainControlIP参数 -
限制
X-Forwarded-For头的使用
技术要点总结
- 漏洞利用依赖集群模式且未配置
MainControlIP - IP校验可通过
X-Forwarded-For头绕过 - Token校验通过
tokenCheck.jsp泄漏的信息可绕过 - 上传限制为ZIP文件,但解压后可以包含任意文件
- 最终利用需要触发解压操作才能实现任意文件上传