Gitlab 任意文件读取漏洞(CVE-2016-9086)

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,用于自托管的 Git 项目仓库。该漏洞源于程序在处理用户提供的文档时没有正确检查符号链接(软连接),导致目录遍历漏洞。攻击者可以利用该漏洞读取任意文件的内容。

GitLab是一套利用Ruby on Rails开发的开源应用程序,可实现一个自托管的Git(版本控制系统)项目仓库,它拥有与Github类似的功能,可查阅项目的文件内容、提交历史、Bug列表等。 GitLab中的'import/export project'功能中存在目录遍历漏洞,该漏洞源于程序没有正确检查用户提供文档中的符号链接。攻击者可利用该漏洞检索任意文件的内容。以下版本受到影响:GitLab CE和EE 8.13.0至8.13.2版本,8.12.0至8.12.7版本,8.11.0至8.11.10

---内容来自中国国家信息安全漏洞库 CNNVD

受影响版本

GitLab CE和EE 8.13.0至8.13.2版本,8.12.0至8.12.7版本,8.11.0至8.11.10

环境搭建

下载镜像包后加载本地 tar 镜像包。

启动容器:

bash 复制代码
docker compose up -d

然后验证容器状态:

bash 复制代码
# 查看所有 GitLab 容器
docker ps | grep gitlab​
# 查看端口映射
docker ps --format "table {{.Names}}\t{{.Ports}}"

复现

注册进来就行。

点击新建一个项目后,点击GitLab export

test.tar.gz 上传,将会读取到 /etc/passwd 文件内容:

这里的 test.tar.gz 值得解释一下。

里面有五个文件,其中 ._VERSION / ._project.bundle是macOS AppleDouble 资源分叉文件 ,由 macOS 自动生成,包含文件扩展属性(如隔离标记 com.apple.quarantine),在 Linux/Windows 上无实际用途。另外 VERSION是版本号。project.bundle 是一个 Git Bundle(v2 格式) ,包含一条真实提交记录。

关键在于 project.json ,这是一个软链接,指向系统敏感文件 /etc/passwd

其内容为:

bash 复制代码
project.json -> /etc/passwd

这是一个经典的 Symlink Attack(符号链接攻击)/ Zip Slip 变种:

复制代码
攻击流程:
1. 受害应用接受 tar.gz 上传
           ↓
2. 服务端解压 test_tar.gz
           ↓
3. project.json 被还原为指向 /etc/passwd 的符号链接
           ↓
4. 应用读取 project.json(本意是读 JSON 配置)
           ↓
5. 实际读取的是 /etc/passwd → 敏感信息泄露

参考资料

相关推荐
daemon.qiang3 天前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
snow@li7 天前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
旧梦星轨9 天前
Git Flow 工作流实践
git·gitee·gitlab·github
旧梦星轨9 天前
Github Flow 与 Gitlab Flow工作流实践解读
gitlab·github
极小狐12 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
snow@li12 天前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
极小狐13 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
DevOps老兵14 天前
AI Infra实战11:模型部署Pipeline——CI/CD自动化
人工智能·ci/cd·ai·自动化·gitlab
极小狐14 天前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
极小狐14 天前
用 Flow 编排 Agent 智能体:极狐GitLab Duo 自定义工作流实战
ai·gitlab·agent·devops·flow·duo