CVE-2023-42442-Jumpserver身份绕过
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/
通过/api/v1/terminal/sessions/获取到的会话ID,下载对应的会话回放,根据复现结果可获取对应会话下的执行所有命令及对应的结果:
漏洞分析
未授权获取sessions
先看看jumpserver的源代码,找到sessions对应的view是api.SessionViewSet: 接着再看看api.SessionViewSet,可以看到SessionsViewSet使用的是rest-framework下的permissions的认证,这里SessionsViewSet视图的权限认证为RBACPermission或者IsSessionAssignee:
再来看看IsSessionAssignee是怎么实现的,在permissions.py中实现了IsSessionAssignee,继承了BasePermission进行自定义权限验证,但是只重写了has_object_permissions,并没有重写has_permission,这就导致了漏洞的产生:
在BasePermission中,has_permission用于视图集合的权限验证,has_object_permissions用于进入视图后特定操作的权限验证
在fest-framework.permissions.BasePermission中has_permission和has_object_permissions默认都返回为True,即无需权限认证就可以访问视图,fest-framework.permissions.BasePermission源码如下:
文笔垃圾,技术欠缺,欢迎各位大师傅请斧正,非常感谢!
如果文章对您有帮助
部分文章会发布公众号!
感谢您的支持!