某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中包含以下字符时会触发防护:
weavercommonctrl
绕过原理
系统在 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
验证方法
-
正常访问接口(返回403):
/weaver/weaver.common.Ctrl/ -
添加.css后缀访问(返回200):
/weaver/weaver.common.Ctrl/.css
任意文件上传分析
漏洞利用链
- 通过
.css后缀绕过安全防护 - 访问
weaver.common.Ctrl接口 - 传递参数:
arg0=com.cloudstore.api.service.Service_CheckApparg1=validateApp
- 系统调用
Service_CheckApp.validateApp()方法
文件上传流程
validateApp函数处理前端传入的数据流- 数据被当作ZIP压缩包处理
- 调用
createLocalApp函数 - 最终调用
decompress函数进行文件解压
漏洞复现步骤
-
构造恶意请求:
POST /weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp附带恶意ZIP文件作为请求体
-
系统会解压ZIP文件到服务器指定目录
防护建议
- 修改安全过滤规则,确保所有敏感接口都经过严格验证
- 对文件上传功能进行严格限制:
- 检查文件类型
- 限制上传目录
- 禁止解压到web目录
- 更新系统到最新版本
- 对
weaver.common.Ctrl接口进行访问控制
扩展利用
除了.css后缀,攻击者还可以使用以下后缀进行绕过:
.cur.ico.png.jpg.gif
日志分析
系统会在触发安全规则时记录日志,可通过查看weaver.security.rules.SecurityRuleQX20相关日志发现攻击尝试。