长亭百川云 - 文章详情

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

NOVASEC

113

2024-07-13

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

0x00 前言

泛微更新补丁规则如下:

/clusterupgrade/clusterUpgrade.jsp

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

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

0x01 跳过分析uploadFileserver.jsp

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

uploadFileserver.jsp要求user != null

0x02 分析uploadFileClient.jsp和token校验算法

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

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

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

对应类路径:

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

这里跳过checkIp分析。

直接跟进checkSecurity 方法:

checkSecurity方法类路径:

checkSecurity方法

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

直接跟进check方法:

weaver.upgradetool.upgrade.CheckSecurity#check

根据代码可以看出:

1、des算法的加密key为license

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

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

0x03 获取license和distributeinfo计算token值

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

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

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

tokenCheck.jsp会返回distributeinfo和token信息

通过访问接口可获取到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,然后写入到相应的文件夹并拼接文件名

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

0x05 分析clusterUpgrade.jsp接口

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

clusterUpgrade.jsp代码内容

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

跟进一下

weaver.upgradetool.upgrade.ClientOperation

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

weaver.upgradetool.upgrade.ClientOperation#upgrade

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

weaver.upgradetool.upgrade.GCONSTUClient#getTempSysFilePath

解压路径:filesystem4cluster/temp

进入更新流程

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

获取更新包路径下的文件

解压更新包文件

解压更新包文件

解压更新包文件

上传压缩包的实际路径

解压压缩包的实际路径

0x06 利用逻辑总结

step 1

0x07 分析思路大致逻辑总结

上传方法

0x99 免责声明

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

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

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

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

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

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

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

END

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

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

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

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

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

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2