泛微OA clusterUpgrade.jsp文件上传分析

admin 2023年12月6日14:24:31评论183 views字数 4159阅读13分51秒阅读模式

泛微OA clusterUpgrade.jsp文件上传分析


△△△点击上方“蓝字”关注我们了解更多精彩




0x00 前言

泛微更新补丁规则如下:

泛微OA clusterUpgrade.jsp文件上传分析


/clusterupgrade/clusterUpgrade.jsp/clusterupgrade/uploadFileClient.jsp/clusterupgrade/uploadFileserver.jsp

分析一下对应的漏洞信息。


注:本文由[nima]大佬的投稿,NOVASEC酒零编辑,如有错误欢迎纠错。




0x01 跳过分析uploadFileserver.jsp

其中/clusterupgrade/uploadFileserver.jsp接口,由于需要用户登录暂不分析

泛微OA clusterUpgrade.jsp文件上传分析

uploadFileserver.jsp要求user != null





0x02 分析uploadFileClient.jsp和token校验算法
其中/clusterupgrade/uploadFileClient.jsp接口,需求获取token的值并校验,然后就可以进行上传。

泛微OA clusterUpgrade.jsp文件上传分析

uploadFileClient.jsp仅要求获取可校验的token参数值



进一步分析token校验方法cluster.checkSecurity(),检查能否绕过检查:

对应类路径:weaver.upgradetool.upgrade.ClientOperation#checkSecurity(java.lang.String,javax.servlet.http.HttpServletRequest)


泛微OA clusterUpgrade.jsp文件上传分析

checkSecurity方法由CheckIp方法和checkSecurity方法组成



这里跳过checkIp分析。


直接跟进checkSecurity 方法:

checkSecurity方法类路径:weaver.upgradetool.upgrade.ClientOperation#checkSecurity(java.lang.String)

泛微OA clusterUpgrade.jsp文件上传分析

checkSecurity方法


在checkSecurity方法中,根据反射调用weaver .upgradetool.upgrade.CheckSecurity类的check方法。


直接跟进check方法:

泛微OA clusterUpgrade.jsp文件上传分析

weaver.upgradetool.upgrade.CheckSecurity#check


根据代码可以看出:

1、des算法的加密key为license2、token=des.encrypt("wEAver2018"+distributeinfo)


跟随getDistributeinfo函数,发现这里的distributeinfo大致就是时间戳信息:

泛微OA clusterUpgrade.jsp文件上传分析


如果获取到license和distributeinfo信息,这里就可以根据license加密("wEAver2018"+distributeinfo)生成一个合法的token,最终完成token的验证。




0x03 获取license和distributeinfo计算token值

但是这个license和distributeinfo信息怎么获取?


这里通过全局搜索getDistributeinfo找到/clusterupgrade/tokenCheck.jsp文件


泛微OA clusterUpgrade.jsp文件上传分析


在这个文件中存在distributeinfo和license的调用,可通过访问接口获取到license和distributeinfo的信息。


泛微OA clusterUpgrade.jsp文件上传分析

tokenCheck.jsp会返回distributeinfotoken信息


通过访问接口可获取到distributeinfo(timestamp值)和DES加密后的license(key值,DES密钥为ecology2018_upgrade)。


通过对返回key值进行DES解密得到license,再使用license作为密钥进行DES加密"wEAver2018"+timestamp值,就得到了token值。


好了,到这里token已经获取到了,这里只要默认密钥没有修改那么这里就存在漏洞。





0x04 放弃uploadFileClient.jsp上传

我们重新回到上传处理方法

weaver.upgradetool.upgrade.UploadHandle#upload

这里同样也对token做了校验,当通过token校验后,对上传的文件后缀校验是否为zip,然后写入到相应的文件夹并拼接文件名


泛微OA clusterUpgrade.jsp文件上传分析

泛微OA clusterUpgrade.jsp文件上传分析

在这里发现该接口只是传上zip并没有自动解压,看到这里放弃。




0x05 分析clusterUpgrade.jsp接口

开始分析下一个/clusterupgrade/clusterUpgrade.jsp接口

泛微OA clusterUpgrade.jsp文件上传分析

clusterUpgrade.jsp代码内容


这里读取了method的值并根据不同的值进行不同的操作,看到这执行顺序盲猜应该是这样:上传-->更新-->获取更新信息


跟进一下

weaver.upgradetool.upgrade.ClientOperation#uploadFileClient

泛微OA clusterUpgrade.jsp文件上传分析


这里和/clusterupgrade/uploadFileClient.jsp中是同一种方法不再分析,往下走进入更新:

weaver.upgradetool.upgrade.ClientOperation#upgrade-->weaver.upgradetool.upgrade.UpgradeThread#run-->weaver.upgradetool.upgrade.ClusterUpgrade#unZip-->weaver.upgradetool.upgrade.UpdateOperation#unzipUpdateweaver.upgradetool.upgrade.GCONSTUClient#getUploadSysFilePath4cluster

获取刚刚上传存储的zip路径WEB-INF/filesystem4cluster/upload

weaver.upgradetool.upgrade.GCONSTUClient#getTempSysFilePath

解压路径:filesystem4cluster/temp


泛微OA clusterUpgrade.jsp文件上传分析

进入更新流程

泛微OA clusterUpgrade.jsp文件上传分析

根据参数条件进入更新线程

泛微OA clusterUpgrade.jsp文件上传分析

获取更新包路径下的文件

泛微OA clusterUpgrade.jsp文件上传分析

解压更新包文件

泛微OA clusterUpgrade.jsp文件上传分析

解压更新包文件

泛微OA clusterUpgrade.jsp文件上传分析

解压更新包文件



泛微OA clusterUpgrade.jsp文件上传分析

上传压缩包的实际路径


泛微OA clusterUpgrade.jsp文件上传分析

解压压缩包的实际路径




0x06 利用逻辑总结
step 11、通过访问/clusterupgrade/tokenCheck.jsp获取DES加密的license和timestamp。(默认DES密钥为:ecology2018_upgrade)2、利用license作为DES密钥加密(”wEAver2018”+timestamp (类似2019-02-19 12:57:28.373)),生成token值。
step 2这里有多条上传路径,以下两个路径均可通过token上传zip文件。/clusterupgrade/clusterUpgrade.jsp/clusterupgrade/uploadFileClient.jsp上传需注意 /clusterupgrade/clusterUpgrade.jsp 需要指定method
step 3调用更新,使得压缩包解压




0x07 分析思路大致逻辑总结
上传方法/clusterupgrade/clusterUpgrade.jsp上传/clusterupgrade/uploadFileClient.jsp上传
token校验:验证客户端IP与token(这里是默认写入在weaver.upgradetool.upgrade.CheckSecurity#check ,默认token为:wEAver2018+当前时间戳)
weaver.upgradetool.upgrade.DesUtils为返回当前时间戳的方法,这里通过搜索关键字的方法定位到clusterupgrade/tokenCheck.jsp获取到固定的Liecense加密密钥为:ecology2018_upgrade
继续往下跟进为上传方法:weaver.upgradetool.upgrade.ClientOperation#uploadFileClient
上传zip路径:WEB-INF/filesystem4cluster/upload
下面为更新方法:weaver.upgradetool.upgrade.UpgradeThread#run()(weaver.upgradetool.upgrade.GCONSTUClient#getPackagePath)
获取更新zip位置(更新完会删除zip包):WEB-INF/filesystem4cluster/upload(weaver.upgradetool.upgrade.GCONSTUClient#getTempSysFilePath)
解压路径:WEB-INF/filesystem4cluster/temp





0x99 免责声明


在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。


1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。


2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。


3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。


4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。


5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。


如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。



END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

泛微OA clusterUpgrade.jsp文件上传分析

或添加NOVASEC-余生 以便于及时回复。

泛微OA clusterUpgrade.jsp文件上传分析


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!



原文始发于微信公众号(NOVASEC):泛微OA clusterUpgrade.jsp文件上传分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月6日14:24:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   泛微OA clusterUpgrade.jsp文件上传分析https://cn-sec.com/archives/2272404.html

发表评论

匿名网友 填写信息