您的位置:首页 > 教育 > 锐评 > [代码审计]jeecg-boot最新权限绕过漏洞分析及新绕过发现

[代码审计]jeecg-boot最新权限绕过漏洞分析及新绕过发现

2024/10/6 8:36:50 来源:https://blog.csdn.net/LiangYueSec/article/details/140840776  浏览:    关键词:[代码审计]jeecg-boot最新权限绕过漏洞分析及新绕过发现

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。

免责声明

本号所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的一切不良后果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立即删除并致歉。

前言

起因是看到都在流传/jeecg-boot/jmreport/save?previousPage=xxx&jmLink=YWFhfHxiYmI=这个payload,便想着去看看是咋回事,大概率就是拦截器里面的token验证绕过,jmreport老版本下的很多接口都是未授权访问的,导致之前爆出了不少漏洞,后来加了token验证,查看代码后发现不止一个地方可以进行权限绕过。

代码分析

具体代码逻辑就在JimuReportTokenInterceptor这个类中,下断点进行调试分析,请求之前披露的漏洞路由/jeecg-boot/jmreport/queryFieldBySql。

首先判断是否有xss payload特征。

如果访问的路由是/jmreport/shareView/,直接返回true,放行。

如果访问的路由不是/jmreport/shareView/,则看这个访问的路由有没有JimuNoLoginRequired注解,有的话也直接返回true,放行。

再判断有没有token传入,并验证token的有效性。

这里没有传入正确的token,接着往下走,this.jimuReportShareService.isSharingEffective方法中判断访问的路由在不在getShareUrls方法返回的List中,如果不在直接返回false。

我们访问的路由不在这个list中,继续往下走,就直接判断有没有传入previousPage参数了,没有的话拦截器会返回false,提示“Token校验失败,无权限访问!”。

现在加上previousPage参数进行访问,这里就会调用到this.jimuReportShareService.isShareingToken方法,只要这个方法返回true,拦截器就会返回true,放行了。

这里再加上网传的payload中的参数jmLink=YWFhfHxiYmI=,给var3赋值后,进行2个判断,只要我们传入的token不存在数据库里,并且访问的路由不是以/jmreport/view开头,就会返回true。

根据上述的分析,不难发现,不仅仅是jmLink参数可以造成权限绕过,还有其他两处地方同样也可以造成权限绕过。

漏洞复现

网传的payload,是jmLink参数参数造成的权限绕过。至于其他两处位置就放在星球的分析文章中。

POST /jeecg-boot/jmreport/queryFieldBySql?previousPage=xxx&jmLink=YWFhfHxiYmI=&token=123123 HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)
Accept: */*
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Type: application/json
Cache-Control: no-cache
Pragma: no-cache
Host: 192.168.131.100:8088
Content-Length: 21{"sql":"select '1' "}

结语

虽然能实现权限绕过了,但上述的几种权限绕过方式只限于/jmreport下的路由,并且之前爆出来的rce的漏洞,官方也已经进行了修复,有权限访问的情况下也无法用之前的payload进行rce了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com