一、简介
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
http://192.168.25.209:8080/core/auth/password/forget/previewing/
2、验证码上点右键,新开一个tab
如果验证码中包含数字10,则请刷新验证码,因为我们使用的脚本暂时无法处理数字10
如果验证码中不包含数字10,则右键菜单中将该验证码在新Tab下打开
新Tab中验证码的URL类似于http://192.168.25.209:8080/core/auth/captcha/image/9c0e29ff8fc5989ba878b1551a4ad7aad80f37b6/,其中包含该验证码的key(一串sha1 hash值),也就是后面伪随机数使用的种子,记录下这个值作为seed
3、返回第一个Tab,刷新页面。
刷新页面的目的是,不使用包含“种子”的验证码,因为这个种子将在后续步骤中使用到。
刷新页面后正确填写用户名和验证码后提交,跳转到验证码验证页面。
此时这个页面的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无法破解,可以返回重新获取一次
输入验证码997956,重置密码成功
成功登录
六、修复方式
升级到安全版本:
v2版本:>= v2.28.19
v3版本:>= v3.6.5