CVE-2023-7028_gitlab 任意用户密码重置漏洞复现
内容提要
GitLab是一个开源的仓库管理系统,存在密码重置漏洞,攻击者可以通过密码重置接管用户账户。影响版本为16.1 <= Gitlab < 16.7.2。修复方案是升级至最新版本或开启双因素认证功能。
延伸解读
漏洞机制:未验证邮箱导致账户接管
文章指出,该漏洞源于GitLab在密码重置流程中对辅助电子邮件地址的验证存在错误。攻击者可以构造请求,使密码重置邮件同时发送到未经验证的邮箱,从而在无需用户交互的情况下重置受害者密码并接管账户。CVSS 3.0评分10.0,属于严重级别。影响范围覆盖16.1至16.7.2之间的多个分支版本,企业需对照具体小版本确认是否受影响。
复现环境搭建的关键步骤
复现使用Docker部署gitlab-ee:16.7.0,需映射443、22、80端口并挂载配置、日志和数据卷。初始root密码需进入容器查看/etc/gitlab/initial_root_password。为触发密码重置邮件,必须配置SMTP,修改/etc/gitlab/gitlab.rb中的smtp_enable、服务器地址、账户和授权码,并执行reconfigure。若测试邮件提示sendmail not found,需安装并启动sendmail服务。
利用方式与修复建议
文章展示了两种利用方式:使用脚本一键发送重置邮件并修改密码,或通过Burp抓包将请求体中的user[email][]参数改为两个邮箱地址,使重置邮件同时发送给攻击者邮箱。官方已发布安全更新,建议升级至最新版本;若无法立即升级,可开启双因素认证以降低账户被接管的风险。
Q&A
GitLab CVE-2023-7028 漏洞影响哪些版本?
影响版本包括:16.1 <= GitLab < 16.1.6、16.2 <= GitLab < 16.2.9、16.3 <= GitLab < 16.3.7、16.4 <= GitLab < 16.4.5、16.5 <= GitLab < 16.5.6、16.6 <= GitLab < 16.6.4、16.7 <= GitLab < 16.7.2。
CVE-2023-7028 漏洞的严重程度如何?
CVSS3 评分为 10.0,属于严重漏洞。
如何修复 GitLab 密码重置漏洞?
官方已发布安全更新,建议升级至最新版本;若无法升级,建议开启双因素认证功能。
如何搭建 GitLab 漏洞复现环境?
在 Docker 中拉取 gitlab-ee:16.7.0 镜像并启动容器,映射端口(如 8443:443、2222:22、9999:80),挂载配置、日志和数据卷,设置共享内存大小。启动后访问 9999 端口,以 root 登录,密码在 /etc/gitlab/initial_root_password 文件中查看。
如何配置 GitLab 的邮件发送功能以复现漏洞?
修改 /etc/gitlab/gitlab.rb 文件,启用 SMTP 并设置邮件服务器地址(如 smtp.163.com)、用户名和密码(授权码),并设置 gitlab_email_from 和 git_user_email 为发件人地址。然后执行 gitlab-ctl reconfigure 重新配置,并通过 gitlab-rails console 测试邮件发送。
漏洞复现的具体步骤是什么?
新建一个受害者账户(邮箱设置为自己的邮箱),使用利用脚本(如 CVE-2023-7028 的脚本)发送重置邮件,收到邮件后复制链接到命令行即可重置密码(默认随机密码),然后登录。或者通过 Burp 抓包,修改请求体为 user[email][]=a.com&user[email][]=b.com,使重置邮件同时发送到两个邮箱,实现密码重置。