某OA接口绕过后任意文件上传分析

admin 2021年7月29日00:37:19评论269 views字数 2325阅读7分45秒阅读模式

更多全球网络安全资讯尽在邑安全

最近公开了某OA的任意文件上传POC,想着来分析一下,下面截图代码为github找到。
上传漏洞的利用接口如下所示:

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

看POC注意到接口后面多了一个.css,根据以往的经验应该是用于权限认证绕过。抓包进行验证结果如下所示:

当接口后面跟.css,请求返回状态码为200,如下所示:

某OA接口绕过后任意文件上传分析

当接口后面不跟.css时,返回状态码为403,如下所示:

某OA接口绕过后任意文件上传分析

由此可以判断.css是用于权限绕过。接下来通过POC入口逆向来分析该漏洞成因。

翻阅资料知道该系统写了全局安全防护规则,当用户请求触发相应防护规则时会记录触发规则及IP等信息。查看日志发现触发了该条规则weaver.security.rules.SecurityRuleQX20

某OA接口绕过后任意文件上传分析

该规则防护源码如下所示:

某OA接口绕过后任意文件上传分析

当请求URL中包含字符weavercommon ,ctrl等字符时就会触发该条防护规则。这时就又有一个疑惑。绕过访问控制的POC/weaver/weaver.common.Ctrl/.css中不是同样存在这些字符嘛为啥没有触发该规则。根据经验判断可能是该系统的全局过滤器在处理URL后缀为.css时,进行了白名单验证放过,不进入防护规则判断。
查看web.xml文件中的安全防护规则filter入口为weaver.filter.SecurityFilter,匹配过滤全局路径,如下所示:

某OA接口绕过后任意文件上传分析

weaver.filter.SecurityFilter源代码中的initFilterBean函数用于初始化系统防火墙即加载所有防护规则:

某OA接口绕过后任意文件上传分析

跟入weaver.security.filter.SecurityMaininitFilterBean函数启动并导入所有规则类:

某OA接口绕过后任意文件上传分析

weaver.filter.SecurityFilter中初始化系统防火墙后之后进行doFilterInternal用于过滤校验前端传入数据是否满足安全要求:

某OA接口绕过后任意文件上传分析

请求数据及FilterChain传入weaver.security.filter.SecurityMainprocess函数继续跟入,idea反编译失败wtf:

某OA接口绕过后任意文件上传分析
使用JD进行反编译发现如下所示代码:

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")))
{
if (!localSecurityCore.null2String(localSecurityCore.getRule().get("OA-Server")).equals("")) {
localHttpServletResponse.addHeader("Server", localSecurityCore.null2String(localSecurityCore.getRule().get("OA-Server")));
}
localSecurityCore.addHeader(localHttpServletRequest, localHttpServletResponse);
paramFilterChain.doFilter(paramHttpServletRequest, paramHttpServletResponse);

str2为获取的请求URL,故上述代码为URL后缀为cur、ico、css、png、jpg、gif时即可条过该filter链校验即不用进行上述weaver.security.rules.SecurityRuleQX20的校验,之后跟进调用paramFilterChain.doFilter进入下一条filter链

某OA接口绕过后任意文件上传分析

POC中的绕过.css换成.cur发现同样绕过访问限制,如下所示:

某OA接口绕过后任意文件上传分析

web.xml之后的filter并未对器防护过滤故直接进入最终的resource处即weaver.common.Ctrl方法:

某OA接口绕过后任意文件上传分析

前台传入arg0arg1参数,并调用doInvokearg0参数为类对象,arg1参数为相应类的方法。跟进POC中的arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp,获取前端数据流导入zip压缩包再进行文件解压:

validateApp函数

某OA接口绕过后任意文件上传分析

createLocalApp函数

某OA接口绕过后任意文件上传分析

decompress函数

某OA接口绕过后任意文件上传分析

由上利用链最终造成绕过权限访问造成任意文件上传。

原文来自: 先知社区

原文链接: https://xz.aliyun.com/t/9581

欢迎收藏并分享朋友圈,让五邑人网络更安全

某OA接口绕过后任意文件上传分析

欢迎扫描关注我们,及时了解最新安全动态、学习最潮流的安全姿势!


推荐文章

1

新永恒之蓝?微软SMBv3高危漏洞(CVE-2020-0796)分析复现

2

重大漏洞预警:ubuntu最新版本存在本地提权漏洞(已有EXP) 



本文始发于微信公众号(邑安全):某OA接口绕过后任意文件上传分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月29日00:37:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某OA接口绕过后任意文件上传分析http://cn-sec.com/archives/389252.html

发表评论

匿名网友 填写信息