uploadFileClient.jsp仅要求获取可校验的token参数值
进一步分析token校验方法cluster.checkSecurity(),检查能否绕过检查:
对应类路径:
weaver.upgradetool.upgrade.ClientOperation
#checkSecurity(java.lang.String,javax.servlet.http.HttpServletRequest)
checkSecurity方法由CheckIp方法和checkSecurity方法组成
这里跳过checkIp分析。
直接跟进checkSecurity 方法:
checkSecurity方法类路径:
weaver.upgradetool.upgrade.ClientOperation
#checkSecurity(java.lang.String)
checkSecurity方法
在checkSecurity方法中,根据反射调用weaver .upgradetool.upgrade.CheckSecurity类的check方法。
直接跟进check方法:
weaver.upgradetool.upgrade.CheckSecurity#check
根据代码可以看出:
1、des算法的加密key为license
2、token=des.encrypt("wEAver2018"+distributeinfo)
跟随getDistributeinfo函数,发现这里的distributeinfo大致就是时间戳信息:
但是这个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已经获取到了,这里只要默认密钥没有修改那么这里就存在漏洞。
我们重新回到上传处理方法
weaver.upgradetool.upgrade.UploadHandle#upload
这里同样也对token做了校验,当通过token校验后,对上传的文件后缀校验是否为zip,然后写入到相应的文件夹并拼接文件名
在这里发现该接口只是传上zip并没有自动解压,看到这里放弃。
开始分析下一个/clusterupgrade/clusterUpgrade.jsp接口
clusterUpgrade.jsp代码内容
这里读取了method的值并根据不同的值进行不同的操作,看到这执行顺序盲猜应该是这样:上传-->更新-->获取更新信息
跟进一下
weaver.upgradetool.upgrade.ClientOperation
#uploadFileClient
这里和/clusterupgrade/uploadFileClient.jsp中是同一种方法不再分析,往下走进入更新:
weaver.upgradetool.upgrade.ClientOperation#upgrade
-->
weaver.upgradetool.upgrade.UpgradeThread#run
-->
weaver.upgradetool.upgrade.ClusterUpgrade#unZip
-->
weaver.upgradetool.upgrade.UpdateOperation#unzipUpdate
weaver.upgradetool.upgrade.GCONSTUClient#getUploadSysFilePath4cluster
获取刚刚上传存储的zip路径WEB-INF/filesystem4cluster/upload
weaver.upgradetool.upgrade.GCONSTUClient#getTempSysFilePath
解压路径:filesystem4cluster/temp
进入更新流程
根据参数条件进入更新线程
获取更新包路径下的文件
解压更新包文件
解压更新包文件
解压更新包文件
上传压缩包的实际路径
解压压缩包的实际路径
step 1
1、通过访问/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
调用更新,使得压缩包解压
上传方法
/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
在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。
1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。
2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。
3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。
5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。
如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。
END
如您有任何投稿、问题、建议、需求、合作、请后台留言NOVASEC公众号!
或添加NOVASEC-余生 以便于及时回复。
感谢大哥们的对NOVASEC的支持点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!