Gitlab任意文件读取导致远程命令执行
由于漏洞较新,复现不易,如果觉得对你帮助麻烦点个赞,转载请联系作者并标明出处,谢谢!!
漏洞环境搭建-Centos7
1.安装依赖软件
yum -y install policycoreutils openssh-server openssh-clients postfix
2.设置postfix开机自启,并启动,postfix支持gitlab发信功能(对漏洞环境应该不重要)
systemctl enable postfix && systemctl start postfix
3.下载gitlab安装包,然后安装
官方下载:
CE下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
EE下载地址:https://packages.gitlab.com/gitlab/gitlab-ee
清华开源镜像站下载:
centos 6系统的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
centos 7系统的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
漏洞版本范围在>=8.5,<=12.9
(ps:测试9.5.0的版本时没有找到move issue功能。查看当前gitlab版本命令:cat
/opt/gitlab/embedded/service/gitlab-rails/VERSION)
下载rpm包并安装:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.5.0-ce.0.el7.x86_64.rpm
rpm -i gitlab-ce-9.5.0-ce.0.el7.x86_64.rpm
4.修改gitlab配置文件指定服务器ip和自定义端口
vim /etc/gitlab/gitlab.rb

这里我设置了8888端口
5.重置并启动Gitlab
执行以下命令
gitlab-ctl reconfigure
gitlab-ctl restart
显示成功启动之后,访问端口进入Gitlab页面,提示修改root密码
PS:若出现502页面,多次刷新页面即可,这是由于Gitlab性能要求比较高,服务器响应慢导致的,推荐虚拟机内存至少分配4G。
漏洞复现
测试版本为gitlab-12.8.7-ce
任意文件读取
0x001 新建两个测试项目

0x002 在其中一个project中创建新的issue,在其问题描述中输入下方代码,然后提交

本文详细介绍了Gitlab的CVE-2020-10977漏洞,包括环境搭建、任意文件读取及远程命令执行的复现过程。通过新建项目、移动issue,利用Gitlab的配置漏洞,最终实现RCE。同时,分享了exploit-db上的EXP和经验,包括python脚本的修正与使用。
最低0.47元/天 解锁文章
9250

被折叠的 条评论
为什么被折叠?



