【产品介绍】
Gitlab是目前被广泛使用基于git的开源代码管理平台,基于ruby on rails构建,主要针对软件开发过程中产生的代码和文档进行管理,同时可以搭建web服务。其实我理解这个产品和我们的github近似。
【漏洞描述】
Gitlab存在目录遍历漏洞,当嵌套在至少五个组中的公共项目中存在附件时,未经身份验证的恶意用户可以利用该漏洞读取服务器上的任意文件。
【影响范围】
Gitlab CE 16.0.0
Gitlab EE 16.0.0
【复现环境】
1、Docker搭建gitLab CE 16.0.0
【拉取镜像】
1  | docker pull gitlab/gitlab-ce:16.0.0-ce.0  | 
【创建并开启容器】
1  | docker run -p 80:80 -d gitlab/gitlab-ce:16.0.0-ce.0  | 

查看一下咱们的这个地址是啥

访问看看能否正常访问

接下来,我们需要查看任务id是什么,我们后面会用到id号查询Gitlab的账号和密码
1  | docker ps -a  | 

【查看root密码】
1  | docker exec -it f1fa5580d7c0 /bin/bash  | 
1  | cat /etc/gitlab/initial_root_password  | 
赶紧用小本本写下来

下面登录我们的Gitlab,输入我们刚刚写的密码

登录成功,创建组

首先我们创建一个组,然后再创建多层子目录

创建一个文件

随意创建一个空项目

创建一个issue,并记录路径

因为777不爱加班,所以前后数据有点对不上,开启重新走了一遍流程,我们接着下面继续
【创建一个issue】

【注意!!!】
前面吃了没有文化的亏,还懒。这个创建目录的时候,手要勤快一点,多建立几层,买不了吃亏,买不了上当
【复制链接】
这是咱们刚issue创建处的文件喔

【拼接地址】
可以读到附件中的内容哈

【构造payload】
1  | /..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd  | 

费了九牛二虎之力,终于学废了。