点击上方↑↑↑“燕云实验室”关注我们
“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。主要研究方向为渗透测试、代码审计、逆向分析、漏洞研究、CTF对抗、威胁情报、应急响应等。
JumpServer是什么?
JumpServer 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议 ,是符合4A 的专业运维审计系统。JumpServer 使用Python / Django 进行开发。
2021年1月15日,JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器,执行任意命令。
由于 JumpServer某些接口未做授权限制,攻击者可构造恶意请求从日志文件获取敏感信息,通过执行相关API操作执行任意命令。
/api/v1/authentication/connection-token/
/api/v1/users/connection-token/
JumpServer < v2.6.2
JumpServer < v2.5.4
JumpServer < v2.4.5
JumpServer = v1.5.9
-
通过前期信息搜集到目标站点使用了JumpServer堡垒机
-
使用脚本探测版本发现其为V2.5.3,该版本可能为受影响范围
1、读取log日志获取参数
首先需要使用websocket来发送参数到/ws/ops/tasks/log/路径下,然后发送{“task”:"/opt/jumpserver/logs/gunicorn"}获得数据包:这里的/opt/jumpserver/是常用的JumpServer安装路径,实际操作时需要根据情况进行修改,所以如果目标在影响范围内却无法正常读取日志,可能是发送参数的路径错误了,并非漏洞不存在。
2、转变思路
我们这里使用websocket工具(这里推荐Edge插件 “CTool 程序开发常用工具”)
构造wsURL:ws://url/ws/ops/tasks/log/
最后构造请求:{"task":"/opt/jumpserver/logs/gunicorn"}
成功获取到日志信息
3、搜索 asset_id system_user_id system_user_id三个关键字
搜索关键字之后,获取到三个值将值替换,并打开数据包就会得到一个token。
注意:token只有20秒的有效期,所以这里建议用脚本。(教程很多,这里就不赘述了)
POST /api/v1/authentication/connection-token/?user-only=None
POST数据为:
{“user”:"",
“asset”:"",
“system-user”""
}
但是本次测试过程中并无system_user_id这个值,无奈只能继续翻看日志,看是否有敏感信息,结果看到一些API接口。
4、接口爆破
将API接口保存为字典,使用burp遍历访问,结果发现一条回显为“重置密码成功”返回包。
5、重置后的口令尝试登录,登录成功
接下来就可以愉快的玩耍了!
-----------------------------------------
原文始发于微信公众号(燕云实验室):单车变摩托||记一次JumpServer信息泄露拿到堡垒机权限
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论