漏洞描述
GitLab是一款Ruby开发的Git项目管理平台。如11.9以后的GitLab中,因为使用了图片处理工具ExifTool而受到漏洞CVE-2021-22204(https://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
环境搭建
使用vulhub搭建漏洞环境。
环境部署完毕后,访问ip+8080、访问到以下页面,环境搭建成功。
漏洞分析
漏洞原理
github上的diff记录对漏洞原理做简单分析。
审计源码、在 lib/gitlab/sanitizers/exif.rb 中 对允许的MIME类型做了修改 对上传文件类型的判断做了修复。
在 spec/lib/gitlab/sanitizers/exif_spec.rb 中对图像的规格检测做了修改。
在workhorse/internal/upload/uploads_test.go中对上传的图片、更新了校验规则、判断规则。
漏洞测试
POC脚本测试如下:
漏洞利用
可利用python脚本exp功能。
1. 上传txt文件
2. 反弹shell
添加执行权限
反弹shell
修复建议
1. 使用白名单、限制源ip;
2. 更新到安全版本。
参考(https://hackerone.com/reports/1154542)
发表评论
您还未登录,请先登录。
登录