
استغلال قراءة الملفات التعسفية في GitLab
يوفر هذا السكربت تنفيذًا عن بُعد للأوامر (RCE) ضد GitLab Community Edition (CE) وEnterprise Edition (EE). الثغرة هي قراءة ملفات اعتباطية تسمح لك باستخراج secret_key_base الخاص بـ Rails عن طريق تنزيل ملف secrets.yaml الخاص بـ GitLab. وهذا بدوره يتيح لك الحصول على تنفيذ الأوامر عن طريق توقيع ملف تعريف الارتباط experimentation_subject_id الخاص بك الذي يستخدمه GitLab داخليًا لاختبارات A/B. يحتوي الحمولة المضمنة في ملف تعريف الارتباط على ثغرة إلغاء تسلسل تسمح بتشغيل الأكواد على مثيل GitLab.
ثغرة قراءة الملفات الاعتباطية موجودة في GitLab EE/CE 8.5 والإصدارات الأحدث. تم إصلاحها في 12.9.1 و12.8.8 و12.7.8. ومع ذلك، فإن RCE يؤثر فقط على الإصدار 12.4.0 وما فوق عندما تم تقديم ملف تعريف الارتباط الضعيف experimentation_subject_id.
تم الاختبار على 12.8.1
تم اختبار الوحدة باستخدام python 3.9 وتتطلب التبعيات التالية:
إذا كان لديك pipenv مثبتًا، يمكنك البدء بسرعة عن طريق تشغيل pipenv install ثم pipenv shell للحصول على شل داخل البيئة الافتراضية pipenv.
$ ./cve_2020_10977.py --help
usage: cve_2020_10977.py [-h] --url URL -u USERNAME -p PASSWORD [--cmd CMD]
optional arguments:
-h, --help show this help message and exit
--url URL Target URL
-u USERNAME, --username USERNAME
Gitlab username
-p PASSWORD, --password PASSWORD
Gitlab password
--cmd CMD Command to execute
تم تضمين Makefile لتسهيل التطوير المحلي أو اختبار الأداة. يعتمد على docker و docker-compose لتشغيل نسخة محلية سريعة من GitLab المعرضة لهذه الثغرة.
make up
سيؤدي هذا إلى تشغيل مثيل محلي من GitLab ومثيل debian لتسهيل اختبار شل عكسي. سيكون مثيل GitLab متاحًا من localhost الخاص بك على المنفذ 5580. وجود هذه الصورة الإضافية يمنحك عنوان IP يمكن الوصول إليه من داخل شبكة docker. من الممكن جعل localhost الخاص بك قابلاً للوصول من حاوية docker، لكنه لا يستحق الجهد برأيي، وبالتأكيد لا أريد الترويج لاستخدام --privileged.
يمكن الاتصال بمثيل RHOST debian بسهولة عن طريق:
make shell
هذا يسمح لك بتحضير الشل العكسي باستخدام nc -lnvp 9000.
عند الانتهاء من ذلك، تكون جاهزًا لاختبار الأداة. يمكنك تشغيل:
make exploit
لتشغيل الأداة، لن يقوم هذا بتنفيذ RCE، بل سيطبع سر Rails الخاص بـ GitLab.
make exploit-rce
سيقوم بربط هذه الثغرة بحمولة RCE المذكورة أعلاه للحصول على شل عكسي.
استمتع بالاختراق!