某OA前台任意文件上传分析
2023-7-31 21:57:0 Author: xz.aliyun.com(查看原文) 阅读量:55 收藏

前段时间,官方发布了10.58.3补丁,其中修复了一处前台任意文件上传漏洞,实际利用条件比较苛刻,在此分享一下分析过程

  1. 目标开启集群模式。

第一部分

通过diff10.58.3和10.58.2的补丁可以发现,在新版本中的补丁禁用了几个集群相关的uri

通过分析,涉及文件上上传的有clusterUpgrade.jsp、uploadFileClient.jsp、uploadFileServer.jsp​,其中uploadFileServer.jsp​需要验证用户信息,剩余两个文件的上传操作一致,我们选取一个进行分析。

首先会对传入的token做安全认证,我们跟进看一下

跟进后发现会对IP和token进行校验,我们分别跟进看一下能否进行绕过。我们首先看一下IP:

首先会判断当前应用程序的类别,此处默认返回ecology。然后会从请求中获取IP地址跟weaver.properties​文件中的MainControlIP​进行匹配。MainControlIP​为集群模式中的主节点IP,默认安装不会配置这个参数,这就是这个漏洞比较鸡肋的一个地方。

我们继续跟进getIp方法中可以发现,它使用的是getRemoteAddr​方法来获取IP地址,此处的getRemoteAddr​被进行了重写,会从header的X-Forwarded-For​来获取IP地址,由此我们可以绕过IP地址的检测。

绕过对IP的检查之后,我们回到上面看一下checkSecurity​对token的检查规则。

跟进

发现会从数据库查询license的值来做加密的Key,无法伪造。后续通过翻看其他文件,发现在tokenCheck.jsp​中泄漏了license

在代码中,他对获取到的license进行DES加密,key使用的是硬编码的值ecology2018_upgrade​,我们可以通过这个接口来获取到加密后的key,然后再解密来获取license。除此之外getDistributeinfo​的值也能通过这个接口来获取

第二部分

安全检查部分绕过之后,我们继续看上传的相关内容。

在upload方法内,会在进行一次安全检查。

之后就会进行文件操作,限定了必须位zip文件。上传路径位C:\WEAVER\ecology\WEB-INF\versionupgrade\upload​。

根据提示我们其实可以看出来,这个功能应该是用来上传补丁包的。正常的业务逻辑肯定是会涉及到解压缩的,且在补丁包中一般都会存在jsp文件,解压缩也不会限制jsp后缀,我们只需要对应的功能点就能完成漏洞的利用。

通过寻找发现在clusterUpgrade.jsp​文件中进行upgrade​是会对C:\WEAVER\ecology\WEB-INF\versionupgrade\upload​目录下的压缩包进行解压缩,默认解压路径位C:\WEAVER\ecology\versionupgrade\temp​。常规业务代码,此处不做分析,感兴趣的可以自己跟一下。

  1. 获取到token之后, 我们上传恶意的zip文件,其中存在我们想要上传的jsp文件

  2. 触发解压缩操作

  3. 文件上传成功

检测思路:目前没能找到很好的检测目标是否配置MainControlIP​的接口,通过检测其中的一处上传接口来进行判断。这种方法只能判断目标没有更新到最新补丁,或者没有禁用相关接口,还需要手动判断是否配置集群模式

  1. 将补丁升级到官方发布的10.58.3版本
  2. 拦截对相应接口的访问

文章来源: https://xz.aliyun.com/t/12750
如有侵权请联系:admin#unsafe.sh