gitlab漏洞系列-Webhook领导泄露导致CI管道触发

admin 2022年5月1日13:53:16评论72 views字数 1089阅读3分37秒阅读模式

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

背景

xanbanx于2019年提交了这个漏洞: 当在GitLab中导出Github连接库时,项目导出包含external_webhook_token。这个令牌允许任何拥有它的人伪造真实的请求来触发GitLab中的CI管道,尽管这个人可能已经不是项目成员了。

复现步骤

在此之前,创建一个Github帐户,再创建一个项目,并推送一个有效的.gitlab-ci.yml文件。

1.创建一个新项目。为外部仓库选择CI/CD导入一个项目;

2.在Connect repositories from功能下选择github;

3.从你的GitHub账户输入你想导入项目个人访问令牌;

4.选择你之前在Github创建的项目进行同步

5.导入项目后,转到https://example.gitlab.com///编辑并导出项目

6.下载项目存档,解压,并检查包含的project.json

...  
    "jobs_cache_index"null,  
    "external_authorization_classification_label""",  
    "external_webhook_token""hcnPbsfximlueXxaaIkg",  
    "pages_https_only"true,  
    "merge_requests_author_approval"null,  
...  

注意,这是报告的一个假标记。当查看代码时,可以看到请求POST:id/mirror/pullhttps://gitlab.com/gitlab-org/gitlab/blob/master/ee/lib/api/project_mirror.rb#L59中。这个请求用于为Github连接的存储库触发一个新的管道。该请求使用X-Hub-Signature头对创建管道的请求进行身份验证。这个签名是通过使用external_webhook_token作为密钥对请求数据计算HMAC来计算的。拥有external_webhook_token意味着您可以制作一个请求并伪造一个有效的X-Hub-Signature来创建一个新的管道。因此,任何可以下载项目的人,例如当他不再是项目成员时,都可以编写这样的请求,从而触发管道。


原文始发于微信公众号(迪哥讲事):gitlab漏洞系列-Webhook领导泄露导致CI管道触发

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月1日13:53:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   gitlab漏洞系列-Webhook领导泄露导致CI管道触发http://cn-sec.com/archives/966237.html

发表评论

匿名网友 填写信息