JumpServer远程命令执行漏洞复现分析

admin 2021年4月2日06:12:15评论90 views字数 1631阅读5分26秒阅读模式

漏洞描述

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文件中加入了一段判断是否已经进行身份认证的代码。

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析
JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

从以上调用链中可以发现,在未修复漏洞时,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远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

未授权文件读取漏洞复现

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

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

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

JumpServer远程命令执行漏洞复现分析

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

https://github.com/Skactor/jumpserver_rce

JumpServer远程命令执行漏洞复现分析

远程命令执行漏洞复现

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

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

JumpServer远程命令执行漏洞复现分析

修复建议

安全版本

>= v2.6.2
>= v2.5.4
>= v2.4.5  
= v1.5.9 (版本号没变)
< v1.5.3

修复方案

将JumpServer升级至安全版本

临时修复方案

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



原文来源:第59号

JumpServer远程命令执行漏洞复现分析

本文始发于微信公众号(网络安全应急技术国家工程实验室):JumpServer远程命令执行漏洞复现分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日06:12:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JumpServer远程命令执行漏洞复现分析https://cn-sec.com/archives/315537.html

发表评论

匿名网友 填写信息