GitLab远程命令执⾏漏洞复现CVE-2021-22205
⾬笋教育⼩编今天分享我们⼯程师发布的关于GitLab 远程命令执⾏漏洞复现的⼀篇技术⼲货,分享给你们⼀起学习。
GitLab 官⽅发布安全补丁更新修复了GitLab命令执⾏漏洞(CVE-2021- 22205)。由于GitLab中的ExifTool没有对传⼊的图像⽂件的扩展名进⾏正确处理,攻击者通过上传特制的恶意图⽚,可以在⽬标服务器上执⾏任意命令,且发现由于GitLab存在未授权的端点,导致该漏洞在⽆需进⾏⾝份验证的情况下即可进⾏利⽤,影响了从 11.9 开始的版本。
0x00漏洞描述
GitLab是⼀款Ruby开发的Git项⽬管理平台。
在11.9以后的GitLab中,因为使⽤了图⽚处理⼯具ExifTool⽽受到漏洞CVE-2021-22204的影响,攻击者可以通过⼀个未授权的接⼝上传⼀张恶意构造的图⽚,进⽽在GitLab服务器上执⾏任意命令。
0x01影响范围
Gitlab CE/EE < 13.10.3
Gitlab CE/EE < 13.9.6
Gitlab CE/EE < 13.8.8
0x02环境搭建
version: '2.3'
services:
redis:
image: redis:5.0.9-alpine
postgresql:
image: postgres:12-alpine
environment:
-
POSTGRES_USER=gitlab
- POSTGRES_PASSWORD=password
- POSTGRES_DB=gitlabhq_production
- DB_EXTENSION=pg_trgm,btree_gist
gitlab:
image: vulhub/gitlab:13.10.1
depends_on:
- redis
- postgresql
ports:
- "8080:80"
-
"10022:22"
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
git常用指令- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
-
GITLAB_HTTPS=false
- SSL_SELF_SIGNED=false
- GITLAB_HOST=localhost
- GITLAB_PORT=8080
- GITLAB_SSH_PORT=10022
- GITLAB_RELATIVE_URL_ROOT=
- GITLAB_SECRETS_DB_KEY_BASE=long-long-long-long-long-long-secret-key-is-here1
- GITLAB_SECRETS_SECRET_KEY_BASE=long-long-long-long-long-long-secret-key-is-here2 - GITLAB_SECRETS_OTP_KEY_BASE=long-long-long-long-long-long-secret-key-is-her3
- TZ=Asia/Kolkata
- GITLAB_TIMEZONE=Kolkata
- GITLAB_ROOT_PASSWORD=vulhub123456
启动命令
docker-compose up -d
0x03漏洞复现
环境启动后,访问your-ip:8080即可查看到GitLab的登录页⾯。
获取cookie
使⽤登录页⾯返回的 Cookie 值和 csrf-token 值
构造RCE数据包
使⽤登录页⾯返回的 Cookie 值和 csrf-token 值,实现 RCE。
获得dnslog:
0x03修复建议
升级到最新版本。
*本⽂章仅供技术交流分享,请勿做未授权违法攻击,⾬笋教育不负任何责任。具体请参考《⽹络安全法》
⾬笋教育渗透测试线上线下都可以学习,想要学更多渗透技术留⾔⼩编!
领取免费学习资料:153********
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论