提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      JumpServer远程命令执行漏洞复现分析
      发布时间:2021-04-02 阅读次数: 221 次

      漏洞描述


      JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统。JumpServer 使用Python / Django 进行开发。


      2021年1月15日,JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器,执行任意命令。建议相关用户尽快采取措施阻止漏洞攻击。


      影响范围


      JumpServer < v2.6.2

      JumpServer < v2.5.4

      JumpServer < v2.4.5

      JumpServer = v1.5.9


      漏洞分析


      查看漏洞修复的代码更新部分

      https://github.com/jumpserver/jumpserver/commit/f04e2fa0905a7cd439d7f6118bc810894eed3f3e


      发现是在apps/ops/ws.py文件中加入了一段判断是否已经进行身份认证的代码。


      下载源码包,更新的apps/ops/ws.py文件是一个TaskLogWebsocket类,搜索TaskLogWebsocket类的调用。


      在apps/ops/urls/ws_urls.py调用了TaskLogWebsocket类,该类中定义了一个/ws/ops/tasks/log/的websocket请求接口,也就是说当发起ws://xxx/ws/ops/tasks/log/这个接口的请求时,都会调用TaskLogWebsocket类。


      通过TaskLogWebsocket类中方法的调用关系,可以看出各方法的调用顺序如下。


      继续跟进到apps/ops/celery/utils.py和apps/ops/ansible/utils.py中,发现它们都调用了ops.utils的get_task_log_path方法。


      继续跟进,在该方法中,task_id参数是可控的,该方法可以读取.log后缀的文件。


      从以上调用链中可以发现,在未修复漏洞时,ws://xxx/ws/ops/tasks/log/这个websocket接口是可以未授权访问的,可以读取.log后缀的文件。


      漏洞复现


      环境搭建


      利用安装脚本可以快速进行安装

      V2.6.1安装脚本:https://www.o2oxy.cn/wp-content/uploads/2021/01/quick_start.zip(参考https://www.o2oxy.cn/2921.html)


      安装完成后启动JumpServer,访问http://192.168.210.37:8080,默认初始账户密码为admin/admin


      修改初始密码后重新登录,进入主界面。


      未授权文件读取漏洞复现


      退出登录,使用chrome websocket插件进行未授权文件读取测试

      ws://192.168.210.37:8080/ws/ops/tasks/log/

      {"task":"/opt/jumpserver/logs/jumpserver"}


      也可以使用poc脚本进行测试

      https://github.com/Skactor/jumpserver_rce


      远程命令执行漏洞复现


      管理员登录,创建一个资产。


      配置用户和权限,登录web终端。


      读取gunicorn.log文件,获取asset_id、system_user_id、user_id三个参数值,搜索/asset-permissions/user/validate即可。


      修改exp脚本中相应的参数,运行


      修复建议


      安全版本

      >= v2.6.2

      >= v2.5.4

      >= v2.4.5  

      = v1.5.9 (版本号没变)

      < v1.5.3


      修复方案

      将JumpServer升级至安全版本


      临时修复方案

      修改 Nginx 配置文件屏蔽漏洞接口

      详情见官方主页:

      https://github.com/jumpserver/jumpserver

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部