CVE2022-0735复现
https://gitlab.com/gitlab-org/gitlab/-/issues/353529官方给出的复现文档信息(触发的功能点的位置是在issues评论的位置),可以获取runner token,这里不做过多赘述(这里需要知道项目的namespace和projectName,不需要有项目权限就可以获取),通过这里可以直接获取项目的runner-token.
Runner-token的利用
此处需要了解CI/CD部署流程!需要大家自行学习
了解Gitlab-runner机制,这是gitlab官方给出的runner执行图 官方文档:https://gitlab.cn/docs/runner/
第一步:客户端机器的gitlab-runner 携带cve-2022-0735获取的runner-token通过/api/v4/runners接口注册到gitlab服务端上,会返回一个token被用做第二步轮巡jobs。
第二步:当代码变动触发CI/CD部署时,客户端的gitlab-runner轮巡服务(反复请求/api/v4/jobs/request接口)携带第一步中的token,获取有代码变动触发的CI/CD部署任务并拉取项目代码在gitlab-runner客户端这台机器上读取项目中的gitlab-ci.yml配置文件并实施,完成部署任务。
这里的gitlab-runner我使用的是docker部署的客户端,gitlab-runner里面实际步骤也是按照图里面的第一步和第二步以及后续的部署集成到了一体
进入部署的docker镜像中,并执行gitlab-runner register(这里就是我们分析的第一步的操作),这里偷个懒之前没截图这里用的别人文章里面的截图
这里有一个非常重要的点也是利用条件之一就是这里的tag_list这个参数列表里面的值必须要和CI/CD部署文件.gitlab-ci.yml中的tags一致不然获取的token后续的轮训是获取不到job的,注册上之后才能有后续的利用
这时你可以去gitlab平台上(需要是管理员),后台上看到注册的gitlab-runner客户端有被注册
此时你去修改你的项目代码后,这里就会触发部署job,然后客户端的gitlab-runner轮巡发现后就会开始部署,为了大家方便理解这里用burp intruder来模仿轮巡,会获取到项目最新修改后的源码获取地址等信息。
这是我创建的测试项目
在我们的客户端gitlab-runner中部署时获取到项目源码
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)