CVE-2023-42820 JumpServer密码重置漏洞验证

一、简介

JumpServer开源堡垒机是一款运维安全审计系统产品,提供身份验证、授权控制、账号管 理、安全审计等功能支持,帮助企业快速构建运维安全审计能力。JumpServer开源堡垒机 通过企业版或者软硬件一体机的方式,向企业级用户交付开源增值的运维安全审计解决方 案。

二、漏洞概述

漏洞编号:CVE-2023-42820
漏洞的核心是随机数种子泄露导致的,未授权的攻击者可以利用该漏洞推算出没有开启多因子验证(MFA)的账号的“重置密码Token”,进而修改该账号的密码。

三、影响版本

受影响的版本:v2.24 – v3.6.4

四、环境搭建

使用vulhub中的docker搭建

cd vulhub/jumpserver/CVE-2023-42820

修改 config.env中的domains为IP或域名,不然登录时会报错
docker-compose up -d

9afa355246c95dc66b625e69dca624c5.png
eeea199fd839b5042486b0d26482c6db.png

五、漏洞复现

1、首先,打开忘记密码页面

http://192.168.25.209:8080/core/auth/password/forget/previewing/

d8c7e7510915c4976d9685f3b8ca9798.png

2、验证码上点右键,新开一个tab

如果验证码中包含数字10,则请刷新验证码,因为我们使用的脚本暂时无法处理数字10
如果验证码中不包含数字10,则右键菜单中将该验证码在新Tab下打开

新Tab中验证码的URL类似于http://192.168.25.209:8080/core/auth/captcha/image/9c0e29ff8fc5989ba878b1551a4ad7aad80f37b6/,其中包含该验证码的key(一串sha1 hash值),也就是后面伪随机数使用的种子,记录下这个值作为seed

1a784e2785db1138083090d1ea775d3e.png

3、返回第一个Tab,刷新页面

刷新页面的目的是,不使用包含“种子”的验证码,因为这个种子将在后续步骤中使用到。

刷新页面后正确填写用户名和验证码后提交,跳转到验证码验证页面。

e0b5ab1338f0deef01082bbf3757b831.png

此时这个页面的URL类似于http://192.168.25.209:8080/core/auth/password/forgot/?token=KEhV46MIz7FIONbOj6r1ic31TDu0M6ENVfuX,其中包含一个随机的token值,记录下这个值作为token

4、使用POC破解验证码

使用vulhub中的脚本

https://github.com/vulhub/vulhub/blob/master/jumpserver/CVE-2023-42820/poc.py

管理员邮箱账号默认为admin@mycomany.com

python3 poc.py -t http://192.168.25.209:8080/ --email admin@mycomany.com --seed ae1fbfe54541fa7502ca6667b316a99cc3874c37 --token ZctFWmFobSVq0FCO5KyDg087N7L03xscCdRy

// seed和token有效期较短,如POC无法破解,可以返回重新获取一次

d064413074626e4fe7247d5207487541.png

输入验证码997956,重置密码成功

961ba37fc8c4593c5425c7c13cec1f25.png

成功登录

b29c624c38f666620e4bf665f85000f2.png

六、修复方式

升级到安全版本:

v2版本:>= v2.28.19
v3版本:>= v3.6.5