T0ngMystic`s Blog

"Security studying, Strive to be Security Re-Searcher. Love everything that I want to do"

CVE-2023-42442-Jumpserver身份绕过

image

2023-09-26 / 共计1071 字


CVE-2023-42442-Jumpserver身份绕过复现

热爱生活的人也会被生活治愈

People who love life will also be healed by life

先挖个坑,复现中的下载对应会话回放具分析情就暂时不放在这里了,过段时间再更新在Blog,感兴趣可以关注我文章底部的公众号和收藏我的Blog 最近jumpserver新爆出了一个新漏洞,CVE-2023-42442,据说是因为/api/v1/terminal/sessions/接口可以匿名访问导致的。最终可以实现未授权下载会话回放。 官方发布受影响版本为v3.0.0 - v3.6.3

漏洞复现

POC以于2023-09-27发布于github有需要的朋友自取(CVE-2023-42442-JumpServer) POC如下,只要访问该接口返回200,基本上就表示存在该漏洞了,该接口泄漏了堡垒机会话的参数:

GET /api/v1/terminal/sessions/

image-CVE-2023-42442-Jumpserver身份绕过-20230920210746223 通过/api/v1/terminal/sessions/获取到的会话ID,下载对应的会话回放,根据复现结果可获取对应会话下的执行所有命令及对应的结果: image-CVE-2023-42442-Jumpserver身份绕过-20230922161704165

漏洞分析

未授权获取sessions

先看看jumpserver的源代码,找到sessions对应的view是api.SessionViewSet: image.png 接着再看看api.SessionViewSet,可以看到SessionsViewSet使用的是rest-framework下的permissions的认证,这里SessionsViewSet视图的权限认证为RBACPermission或者IsSessionAssignee: image.png

再来看看IsSessionAssignee是怎么实现的,在permissions.py中实现了IsSessionAssignee,继承了BasePermission进行自定义权限验证,但是只重写了has_object_permissions,并没有重写has_permission,这就导致了漏洞的产生: 在BasePermission中,has_permission用于视图集合的权限验证,has_object_permissions用于进入视图后特定操作的权限验证 image.png 在fest-framework.permissions.BasePermission中has_permission和has_object_permissions默认都返回为True,即无需权限认证就可以访问视图,fest-framework.permissions.BasePermission源码如下: image.png

文笔垃圾,技术欠缺,欢迎各位大师傅请斧正,非常感谢!


如果文章对您有帮助

部分文章会发布公众号!

感谢您的支持!