红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

admin 2024年5月13日02:00:06评论46 views字数 1994阅读6分38秒阅读模式

0x00 来了

年更博主回来了

0x01 声明

声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系公众号加白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x02 前言

最近在做一些项目的时候遇到了JumpServer的堡垒机,刚好最近爆出了CVE-2023-42442的未授权访问漏洞,说是可以获取到Linux主机的历史命令,但是发现网上分享的复现过程都只有获取id的那一步,后利用过程没有。

遂自己部署环境进行了测试,先说测试结果:

1.可获取Linux主机的历史命令,可直接转换成录频文件并使用JumpServer官方的播放器进行播放。

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

2.可获取Windows主机以及其他堡垒机纳管的应用的记录并转换为录屏文件。

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

0x03 POC复现

首先根据网上公开的POC来请求一下http://192.168.123.120/api/v1/terminal/sessions/

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

可以看到返回了很多内容,然后再查看下JumpServer的api文档

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

传参只需要1个id值,尝试使用自带的接口replay/download进行下载,发现401了

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

接着去看看GitHub上JumpServer更新了什么

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

0x04 Nginx规则绕过

通过GitHub上的更新日志发现只有1条“优化 Nginx 配置文件静态录像文件获取路径”

那么继续去查看Nginx的代码,看看这个版本做了哪些改动

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

直接在JumpServer的开源项目docker-web中就能看到,很明了,删除了下面这段配置

    location /media/replay/ {        add_header Content-Encoding gzip;        root /opt/jumpserver/data/;    }

进入到docker容器jms_web中对应目录查看结构

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

在文件夹里有对应id的gz文件,XXX.cast.gz的是Linux的,XXX.replay.gz的是Windows的

尝试构造请求包发现403了

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

继续查看Nginx配置文件发现是优先匹配到了下面这部分,然后交由core进行处理了

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

按道理讲这部分没啥问题,但是新版本既然删除它了说明肯定在哪里出了问题,通过Fuzz JumpServer代码中遍历出来的路由发现可以通过/media/xpack/../replay的方式进行绕过

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

0x05 录像文件还原

到这一步其实就已经完成Linux操作记录的获取了,但是这个格式看起来的真的累,而且Windows的明明也在目录下也能获取到,不应该没办法还原

转战到JumpServer后台,在后台功能“审计台-会话审计-会话记录”中,可以下载历史会话文件,是个tar文件,和漏洞读取到的gz文件不一样

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

根据官方文档可知下载下来的文件是可以用他们的播放器进行播放的,播放器下载地址在这:https://github.com/jumpserver/VideoPlayer

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

通过播放器打开下载下载的tar文件,可以正常回放操作记录

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

回到录像文件存放目录,发现被我们下载过的历史记录多出了.tar和.json格式的两个文件

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

解压下载下来的tar文件可以看到里面有2个文件,就是同名的json和cast.gz

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

但是在管理员没有下载历史记录的时候,是不会有这个json和tar文件的,tar文件已知是打包了cast.gz和json文件产生的,那么这个json文件咋来呢

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

通过对比json文件内容和/api/v1/terminal/sessions/接口获取到的数据发现内容大致相同,尝试使用接口获取到的内容保存为json

然后再把0x04这一步获取到的文件使用gzip压缩回gz文件,因为通过接口获取到的文件虽然文件名还是cast.gz,但是实际上是已经解压缩的文件了,需要把他压缩回去

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

至此,录像文件的还原也完成了,尝试使用播放器打开可正常播放

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

Windows操作同上

红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

0x06 利用工具

代码水平比较差,只是简单实现了获取最新一条操作记录并转为录像文件的功能

下载地址:https://github.com/HolyGu/CVE-2023-42442

使用方式:go run CVE-2023-42442.go --url http://192.168.123.120

0x07 参考

参考链接:

[1] https://docs.jumpserver.org/zh/v3/dev/rest_api/

[2https://github.com/jumpserver/docker-web/commit/e378937df52a43eea26dc9626579493c0ec16a19

[3https://github.com/jumpserver/VideoPlayer

原文始发于微信公众号(NearSec):红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月13日02:00:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红队攻防之JumpServer未授权访问漏洞(CVE-2023-42442)后利用过程分享http://cn-sec.com/archives/2073857.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息