声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
背景
白帽小哥joaxcar2021年发现并提交了这个漏洞:
当一个项目访问令牌被创建时(project access token),用户被要求“给这个令牌一个名字”; 文档中几乎没有迹象表明,这个“令牌名称”将是为方便令牌而创建的底层BOT用户的名称。由于Gitlab目前是结构化的,所有常规用户都可以通过https://gitlab.com/USERNAME和API (/API/v4/users/:id)
公开查看。
所存在的问题: 当创建一个项目访问令牌时,创建它的用户可能更多地考虑的是在项目内部(可能是私有的)提供信息。而不是这个名字可能会透露给未经认证的用户浏览GitLab。由于bot用户被赋予一个相当通用的用户名(project_<PROJECT_ID>_bot
),一个简单的搜索将列出所有这些bot。恶意用户现在看到的是: 1.来自高级或以上用户的(通常是私有的)项目ID 2.关于这个项目的信息通常包括:成员名称、项目名称、公司名称、构建工具等等。甚至是令牌;
在此之后,可以通过搜索<PROJECT_ID>_bot
来检查给定项目中是否存在多个BOT用户。新的列表将显示所有BOT用户bot1, bot2…等等。这个列表可以让恶意用户对私有项目有更深入的了解。搜索_bot10会给出包含至少10个BOT用户的项目列表,这可能会揭示有关项目的大量信息。
复现步骤
1.退出gitlab.com(这可以在未经验证的情况下工作) 2.跳转去https://gitlab.com/-/graphql-explorer
3.发出一个请求:
{
users(search: "_bot") {
nodes {
username
name
}
}
}
结果列出了大部分私人项目信息。
影响
未经认证的参与者可以请求BOT用户名单,这些名单可能会泄露私人项目(gitlab.com: premium)客户的秘密信息。
原文始发于微信公众号(迪哥讲事):gitlab漏洞系列-项目访问令牌名泄露
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论