gitlabapi(gitlabapi npm包)

http://www.itjxue.com  2023-02-13 14:19  来源:未知  点击次数: 

Gitlab API开发

一、添加依赖,免去重复造轮子困扰

二、在Gitlab上新建一个个人访问令牌

三、熟读API文档

参考官方文档:

四、上传文件(坑点)

Gitlab API支持新建文件,但不支持文件流直接上传,网上相关的资料也较少。

在项目中我的替代方法是将文件转换为Base64,再调用新建文件的API上传文件

gitlabrestapi关闭mergerequest

使用Gitlab API可以很容易关闭mergerequest,方法是调用PUT /projects/:id/merge_requests/:merge_request_iid接口,将state参数设置为closed,即可关闭mergerequest。此外,可以使用PUT /projects/:id/merge_requests/:merge_request_iid/merge接口将mergerequest合并到target branch,同时将mergerequest关闭。

gitlab漏洞系列

gitlab漏洞系列-“外部状态检查”API泄漏关于实例的状态检查的数据

这个漏洞是joaxcar小哥在2021年10月份提交的:

用于从外部状态检查返回批准的API接口包含一个IDOR,该IDOR允许用户列出关于GitLab实例上所有外部状态检查的信息。该功能是一个终极版功能(注:终极版一般都是付费的),但可以在GitLab.com上试用。所以攻击的是可能是一个常规帐户。

当配置了外部状态检查时,项目将向指定的端点发送关于MRs的信息。然后可以配置这个端点来响应“通过”状态检查的请求。文档详见: ;这个API的接口是:

关键参数为 sha 和 external_status_check_id 。这个参数告诉GitLab请求的目标是哪个外部状态检查。从GitLab返回的是JSON,包含关于MR的信息,但也包含关于状态检查配置的信息。通过修改发送的ID,用户可以获得实例上任何状态检查的信息(甚至来自Private的项目)。

关于状态检查的泄露信息可能包含:

1.创建两个用户:受害用户victim01和攻击用户attacker01

2.以victim01的身份登录,并在 上创建一个名为victim_project的新私有项目

3.转到项目设置 ,在“General”下展开“Merge request”。向下滚动到“状态检查”,然后单击“新建”

4.将状态检查命名为“受害者状态检查”,并输入API端点 。

5.点击保存

6.登出并以attacker01登陆

7.再次执行步骤2到5,但将项目命名为attacker_project并进行状态检查。记下项目的ID。我们称之为attackid

8.在 创建分支attacker_project

9.当分支被创建时,点击 Create new merge request 。将MR随意命名并单击创建。

10.访问 并为attacker01创建一个访问令牌,我们将其称为TOKEN

11.打开终端并发出此请求(这里的SHA只是“a”,我们将得到正确的响应)

12.这个初始请求将返回一个错误,主要是返回正确的 sha 是 sha 这样的信息

13.现在发送正确的SHA:

14.我们将得到一个响应,其中包含关于MR的信息,最后是关于状态检查的信息

15.现在再次发送相同的请求,但将状态检查id更改为1

16.同样的MR信息会被返回,但是最后会有来自victim_project的关于私有状态检查的信息

(责任编辑:IT教学网)

更多

相关java认证文章

推荐java认证文章