![图片[1]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd090658.png)
0x00 JumpServer与漏洞介绍
JumpServer是一个开源的堡垒机,server端使用python编写开发,开源地址在https://github.com/jumpserver/jumpserver。
在上周五被爆出一个远程命令执行漏洞,这个远程命令执行主要由一个log日志跨目录读取引发。
漏洞影响版本:
- < v2.6.2
- < v2.5.4
- < v2.4.5
- = v1.5.9
- = v.15.3
![图片[2]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091230.png)
0x01 漏洞详情
漏洞主要由两部分组成:
跨目录读取log日志来获取token
利用获取的token构造ws通信payload,在jumpserver所管理的服务器进行命令执行。
本文主要对1部分进行分析,也是漏洞利用的前提关键条件。
log日志读取漏洞触发主要在apps/ops/ws.py 文件,关键代码为task_log_f = open(log_path, ‘rb’) ,位于wait_util_log_path_exist函数。
0x02 日志读取漏洞调用链分析
apps/ops/ws.py的receive函数引入污点
污点由websocket通信进来。查阅相关文档,函数receive中的text_data为用户可控的参数。
![图片[3]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091729.png)
![图片[4]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091756.png)
2. 污点传递到handle_task, 又将污点传递给read_log_file
![图片[5]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091911.png)
3. read_log_file函数再传递到上文提及的wait_util_log_path_exist函数
![图片[6]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091923.png)
日志读取返回也是在此处,循环读取4096btypes,然后sleep(0.2)。
4. wait_util_log_path_exist 中通过get_celery_task_log_path获取路径,get_celery_task_log_path方法直接将污点拼接到所
要读取的日志路径当中,造成一个跨目录的问题
![图片[7]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd091938.png)
0x03 Xcheck自动化审计
xcheck检查结果如下,仅耗时2s:
![图片[8]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd092002.png)
![图片[9]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd092022.png)
这是我们适配channels.generic.websocket 之后的检查结果,这个适配添加过程仅仅是将receive 方法的参数设置成污点,剩下的这长长的调用链都可由xcheck自动化完成。
![图片[10]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd092244.png)
漏洞复现:
1.本地搭建成功
![图片[11]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd092256.png)
2. 漏洞验证
![图片[12]-JumpServer日志读取漏洞自动化审计分析-NGC660 安全实验室](http://ngc660.cn/wp-content/uploads/2022/08/d2b5ca33bd092315.png)
实际利用可读取默认log目录/opt/jumpserver/core/logs下的日志文件获取token等敏感信息。
漏洞利用进行命令执行的部分本文不进行赘述,可参考《Jumpserver 任意命令执行漏洞分析报告》这篇文章。
0x04 参考
- 修复建议:《JumpServer 远程命令执行漏洞风险通告,腾讯安全全面检测》 https://mp.weixin.qq.com/s/yB7pSlG2ZFz65JDf5A-1Mg
- 《Jumpserver 任意命令执行漏洞分析报告》https://mp.weixin.qq.com/s/mJ7nY1r2QWeNzaRK6aZViA
专注于代码安全 | 公众号:腾讯代码安全检查Xcheck
本文作者:Xcheck
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/162750.html
昶之琴![资深玩家 徽章-资深玩家-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
我以为只要提交就行了好想告诉你![备受喜爱 徽章-备受喜爱-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
花巨资看一下